.htaccess 301从具有查询字符串的URL重定向到具有不同查询字符串的新域
我想知道如何在我的htaccess文件中执行301重定向,以将一些文件重定向到新域。以下是我需要知道的方法: 旧网址: 新网址: 重定向不必自动创建。我可以在htaccess文件中硬编码我需要重定向的页面,我只是不知道要使用什么格式,因为我已经读到“标准”301重定向无法处理查询字符串 基本上这就是我想做的,但从我目前的研究来看,这似乎不可能做到.htaccess 301从具有查询字符串的URL重定向到具有不同查询字符串的新域,.htaccess,redirect,query-string,http-status-code-301,.htaccess,Redirect,Query String,Http Status Code 301,我想知道如何在我的htaccess文件中执行301重定向,以将一些文件重定向到新域。以下是我需要知道的方法: 旧网址: 新网址: 重定向不必自动创建。我可以在htaccess文件中硬编码我需要重定向的页面,我只是不知道要使用什么格式,因为我已经读到“标准”301重定向无法处理查询字符串 基本上这就是我想做的,但从我目前的研究来看,这似乎不可能做到 redirect 301 /index.php?page=news&id=2366 http://www.example2.com/news.
redirect 301 /index.php?page=news&id=2366 http://www.example2.com/news.php?name=23546
您可以将重写规则与查询字符串匹配条件一起使用,例如:
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]
查看更多关于如何工作的信息。我也有同样的问题,但更复杂,因为我需要放弃其他参数 像这样:
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]
解决方案是在要使用的参数前后添加“*?”
我不知道这是否是最好的解决方案,但它是有效的。我也有同样的问题-我很好奇为什么简单的重定向301。。。根据我所有的谷歌搜索,它似乎不起作用。