如何在请求中创建不带问号 (?) 和其他不重要文本的 301 重定向到远程域?
How can I create a 301 redirect to remote domain without question marks (?) and other unimportant text in the request?
我想从 http://fubar.com/subpage.php?pageId=99
开始
并在另一个域上结束 http://newdomain.org/fubar/99
这是我的 .htaccess 顶部的内容
RewriteEngine On
RewriteBase /
RewriteCond %{THE_REQUEST} /subpage.php\?pageId=(.*)$
RewriteRule ^ http://newdomain.org/fubar/?%2 [R=301,L,NE]
这就是我得到的。
from
http://fubar.com/subpage.php?pageId=99
to
http://newdomain.org/fubar/?pageId=99
我不明白 ?%2
中 RewriteRule 末尾的 ?
。我希望删除它,但最后只有 http://newdomain.org/fubar/
奖金问题,在测试这样的东西后如何重置?当我破坏东西时,我总是不得不切换浏览器和隐身模式。
THE_REQUEST
变量表示 Apache 从您的浏览器收到的原始请求,并且在执行其他重写指令后不会被覆盖。此变量的示例值为 GET /index.php?id=123 HTTP/1.1
。这意味着您捕获查询参数 pageId
的正则表达式不正确,而且 %2
将始终为空,因为您只捕获一个值。
您可以使用这条规则:
RewriteEngine On
RewriteBase /
RewriteCond %{THE_REQUEST} /subpage\.php\?pageId=([^&\s]*) [NC]
RewriteRule ^ http://newdomain.org/fubar/%1? [R=301,L,NE]
?
最终将剥离先前的查询字符串,该字符串会自动转发到新的 URL.
我想从 http://fubar.com/subpage.php?pageId=99
开始
并在另一个域上结束 http://newdomain.org/fubar/99
这是我的 .htaccess 顶部的内容
RewriteEngine On
RewriteBase /
RewriteCond %{THE_REQUEST} /subpage.php\?pageId=(.*)$
RewriteRule ^ http://newdomain.org/fubar/?%2 [R=301,L,NE]
这就是我得到的。
from
http://fubar.com/subpage.php?pageId=99
to
http://newdomain.org/fubar/?pageId=99
我不明白 ?%2
中 RewriteRule 末尾的 ?
。我希望删除它,但最后只有 http://newdomain.org/fubar/
奖金问题,在测试这样的东西后如何重置?当我破坏东西时,我总是不得不切换浏览器和隐身模式。
THE_REQUEST
变量表示 Apache 从您的浏览器收到的原始请求,并且在执行其他重写指令后不会被覆盖。此变量的示例值为 GET /index.php?id=123 HTTP/1.1
。这意味着您捕获查询参数 pageId
的正则表达式不正确,而且 %2
将始终为空,因为您只捕获一个值。
您可以使用这条规则:
RewriteEngine On
RewriteBase /
RewriteCond %{THE_REQUEST} /subpage\.php\?pageId=([^&\s]*) [NC]
RewriteRule ^ http://newdomain.org/fubar/%1? [R=301,L,NE]
?
最终将剥离先前的查询字符串,该字符串会自动转发到新的 URL.