我想从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
中重写规则末尾的?
。我希望删除它,但最终只有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。