我需要使用POST数据重定向除1页以外的所有页面

时间:2013-02-13 14:12:03

标签: php json redirect

我需要将旧域中的请求重定向到新域,同时保留旧域中的页面。

  • page.json包含发布数据,将在旧域上处理
  • data.json包含发布数据,需要重定向到新域
  • stat.json包含发布数据,需要重定向到新域...并继续

编辑:简而言之,除了1页

之外,所有带有发布数据的.json都会重定向到新域名

如果可能的话,我怎样才能完成它? 我使用fiddler在原始视图中进行调试

重定向之前(使用.htaccess方法)

POST http://old.com/data.json HTTP/1.1
Content-Type: application/x-www-form-urlencoded
User-Agent: Dalvik/1.6.0 (Linux; U; Android 4.1.2; GT-N7105 Build/JZO54K)
Host: old.com
Connection: Keep-Alive
Accept-Encoding: gzip
Content-Length: 100

session=gVgr30Erxf03cDaA&store_version=9203b&inventory_version=123

重定向后

GET http://new.com/data.json HTTP/1.1
Content-Type: application/x-www-form-urlencoded
User-Agent: Dalvik/1.6.0 (Linux; U; Android 4.1.2; GT-N7105 Build/JZO54K)
Host: new.com
Connection: Keep-Alive
Accept-Encoding: gzip

2 个答案:

答案 0 :(得分:1)

.htaccessmod_rewrite

一起使用
RewriteEngine On
RewriteRule ^page\.json$  -                        [L]
RewriteCond %{REQUEST_METHOD} =POST
RewriteRule ^(.*\.json)$  http://newdomain.com/$1  [R=307,QSA]
  • 第二行说:如果页面与'page.json'匹配并且停止重写[L],请不要更改。
  • 第3行说:只做重写POST请求
  • 第4行说:数学上以'.json'结尾的任何内容以及temporary redirect [R=307]http://newdomain.com/ {page}的数据。同时添加任何网址参数[QSA]

概念证明

的.htaccess

RewriteEngine On
RewriteCond %{REQUEST_METHOD} =POST
RewriteRule ^$  http://test.jasny.net/redirect/posthere.php  [R=307,QSA]

的index.html

<form action="/redirect/" method="POST">
  <input type="text" name="test">
  <button type="submit">Submit</button>
</form>

posthere.php

<?
  var_dump($_POST);

See it work

答案 1 :(得分:0)

我同意arnold,.htaccess,但是如果你想要只有$ _POST数据的请求那么我会创建一个处理请求的小php文件,测试它是否包含post然后重定向到你的旧域,如果没有重定向到新域名

的.htaccess

RewriteCond %{REQUEST_METHOD} =POST
RewriteRule ^foo/bar$ http%1://www.example.com%{REQUEST_URI} [L,R=301]

或将所有流量重定向到php文件并执行:

if( count( $_POST ) < 1 ) {
    header( "HTTP/1.0 301 Moved Permanently" ); 
    header( "Status: 301" );
    header( "Location: http://".CLIENT_DOMAIN."{$_SERVER['REQUEST_URI']}");     
    die();//or exit;
}else{////same}