7

我试图弄清楚如何在我的 htaccess 文件中进行 301 重定向,以将一些文件重定向到新域。这是我需要知道的:

旧网址:http ://www.example.com/index.php?page=news&id=2366

新网址:http ://www.example2.com/news.php?name=23546

不必自动创建重定向。我可以在 htaccess 文件中对需要重定向的页面进行硬编码,但我只是不知道要使用的格式,因为我读过“标准”301 重定向不适用于查询字符串。

基本上这就是我想要做的,但从我目前的研究来看,这听起来不像可以这样做。

redirect 301 /index.php?page=news&id=2366 http://www.example2.com/news.php?name=23546
4

2 回答 2

19

您可以使用带有查询字符串匹配条件的重写规则,例如:

RewriteEngine On
RewriteCond   %{REQUEST_URI}    ^/index.php$
RewriteCond   %{QUERY_STRING}   ^page=news&id=2366$
RewriteRule   ^(.*)$ http://www.example2.com/news.php?name=23546   [R=301,L]

查看此博客页面以获取有关其工作原理的更多信息。

于 2012-04-13T06:07:27.103 回答
0

我有同样的问题,但更复杂,因为我需要丢弃其他参数。

像这样:my-old-page.php?a=1&b=2&c=3

我需要使用其中一个字符串并丢弃其他字符串,但该解决方案仅在我想使用最后一个参数 (c=3) 时才有效。如果我想使用任何其他(a=1 或 b=2),它会运行到 404。经过多次努力和搜索,我找到了答案:

RewriteCond %{QUERY_STRING}  ^.* ?b=2.* ?$ (without space after the *)

RewriteRule (.*)  http://www.my-webpage.php/new-location-2?  [R=301,L]

解决方法是".*?"在参数前后添加使用。

我不知道这是否是最好的解决方案,但它确实有效。

于 2015-10-15T11:11:08.097 回答