2

我正在编辑一个 .htaccess 文件,用于从 www.oldwebsite.com 重定向到 www.newwebsite.com + 页面的特定重定向。

以下代码运行良好:

RedirectPermanent /page.html http://www.newwebsite.com/newpage.html

我遇到问题的地方是当我尝试使用 redirectpermanent 重定向以这样结尾的页面时:

oldpage.php?id=1

此时我得到一个 404 错误。

我尝试了另一种解决方案,即此代码

RewriteCond %{QUERY_STRING}   ^id=1$
RewriteRule ^oldpage\.php$ http://www.newwebsite.com/newpage2.html [R=301,L]

这是工作除了浏览器让我去以下链接:

http://www.newwebsite.com/newpage2.html?id=1

有人可以帮我解决这个问题。我想使用永久重定向(不起作用,与重定向 seeother 相同)。我认为解决方案很简单,但我没有得到我认为的细节。

谢谢 !!!

4

3 回答 3

1

只需?在 rewriteRule 末尾添加以覆盖查询字符串

RewriteCond %{QUERY_STRING}   ^id=1$
RewriteRule ^oldpage\.php$ http://www.newwebsite.com/newpage2.html? [R=301,L]
于 2013-07-09T13:53:24.087 回答
0

您可以为此使用 PHP $_SERVER['PHP_SELF'] 方法。

所以,

$page = $_SERVER['PHP_SELF'];

header("Location: http://www.newwebsite.com$page");

它将http://www.oldwebsite.com/newpage.html重定向到http://www.newwebsite.com/newpage.html

或者代替$_SERVER['PHP_SELF']你可以试试$_SERVER['REQUEST_URL']

于 2013-07-09T13:55:31.470 回答
0

如果您尝试删除查询字符串,可以使用QSD 标志

RewriteCond %{QUERY_STRING}   ^id=1$
RewriteRule ^oldpage\.php$ http://www.newwebsite.com/newpage2.html? [R=301,L, QSD]
于 2013-07-09T14:01:19.443 回答