如何在请求中创建一个301重定向到远程域而不带问号(?)和其他不重要的文本



我想从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。

相关内容

  • 没有找到相关文章

最新更新