使用查询字符串参数的 Htaccess 301 重定向
Htaccess 301 redirect with query string params
这太基础了,你不得不问为什么实施起来这么复杂。
只需要将一个 url 重定向到同一域中的另一个,但是 url 包含查询字符串参数:
我试过了:
RewriteRule ^article.php?section=exclusive&id=543 articles/view/4639 [R=301,L]
我无法找到页面 - 重定向没有发生。我在同一个 htaccess 中有其他重定向可以工作。查询字符串参数导致问题,转义它们也无济于事。
注意两个 url 的 id 不一样,因此我不想要一个聪明的重写规则,它从一个 url 转换为另一个映射查询字符串到新的参数。我只想要一个从 A 到 B 的快速而肮脏的映射。
更新
我试过它重定向但它正在将我的旧查询字符串添加到新 url 的末尾。我怎样才能防止这种情况发生?
RewriteCond %{REQUEST_URI} ^/article\.php$
RewriteCond %{QUERY_STRING} ^section=exclusive
RewriteRule ^$ http://www.onlinegooner.com/articles/view/3000 [R=301,L]
输入url是:mydomain.com/article.php?section=exclusive
您可以使用这条规则:
RewriteCond %{QUERY_STRING} ^section=exclusive [NC]
RewriteRule ^article\.php$ /articles/view/3000? [R=301,L,NC]
目标中的 ?
将去掉之前的查询字符串。
这太基础了,你不得不问为什么实施起来这么复杂。
只需要将一个 url 重定向到同一域中的另一个,但是 url 包含查询字符串参数:
我试过了:
RewriteRule ^article.php?section=exclusive&id=543 articles/view/4639 [R=301,L]
我无法找到页面 - 重定向没有发生。我在同一个 htaccess 中有其他重定向可以工作。查询字符串参数导致问题,转义它们也无济于事。
注意两个 url 的 id 不一样,因此我不想要一个聪明的重写规则,它从一个 url 转换为另一个映射查询字符串到新的参数。我只想要一个从 A 到 B 的快速而肮脏的映射。
更新
我试过它重定向但它正在将我的旧查询字符串添加到新 url 的末尾。我怎样才能防止这种情况发生?
RewriteCond %{REQUEST_URI} ^/article\.php$
RewriteCond %{QUERY_STRING} ^section=exclusive
RewriteRule ^$ http://www.onlinegooner.com/articles/view/3000 [R=301,L]
输入url是:mydomain.com/article.php?section=exclusive
您可以使用这条规则:
RewriteCond %{QUERY_STRING} ^section=exclusive [NC]
RewriteRule ^article\.php$ /articles/view/3000? [R=301,L,NC]
目标中的 ?
将去掉之前的查询字符串。