.htaccess和.php?重定向

时间:2013-07-09 13:15:13

标签: php .htaccess

我正在编辑.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

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

谢谢!!!

3 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分: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']

答案 2 :(得分:0)

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

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