我的httpd.conf
文件中已经有很多有效的 mod_rewrite 规则。我最近才发现 Google 已将我的一个未重写的 URL 编入索引,其中包含一个查询字符串:
http://example.com/?state=arizona
我想使用 mod_rewrite 做一个 301 重定向到这个 URL:
http://example.com/arizona
问题是稍后在我的重写规则中,第二个 URL 被重写以将查询变量传递给 WordPress。它最终被重写为:
http://example.com/index.php?state=arizona
这是正确的功能。到目前为止,我所尝试的一切要么根本不起作用,要么让我陷入无休止的重写循环。这就是我现在所拥有的,它陷入了一个循环:
RewriteCond %{QUERY_STRING} state=arizona [NC]
RewriteRule .* http://example.com/arizona [R=301,L]
#older rewrite rule that passes query string based on URL:
RewriteRule ^([A-Za-z-]+)$ index.php?state=$1 [L]
这给了我一个无休止的重写循环并将我带到这个 URL:
http://example.com/arizona?state=arizona
然后我尝试了这个:
RewriteRule .* http://example.com/arizona? [R=301,L]
它摆脱了 URL 中的查询字符串,但仍然创建了一个循环。