我有这个针对Apache的301重定向规则:
RewriteEngine On
RewriteRule ^park.php?park_id=3 http://hiking.comehike.com/outdoors/parks/park.php?park_id=3 [R=301,L]
我想知道这个网址:
http://www.comehike.com/outdoors/parks/park.php?park_id=3
重定向到此网址:
http://hiking.comehike.com/outdoors/parks/park.php?park_id=3
但正如我现在所做的那样,它并没有尝试重定向。带有规则的.htaccess文件位于/ parks /目录中。
我做错了什么吗?似乎这应该是相对直接的。
谢谢!
答案 0 :(得分:3)
这是查询字符串;你需要添加一个条件才能拿起它,比如:
RewriteEngine On
RewriteCond %{QUERY_STRING} ^park_id=3$
RewriteRule ^park.php http://hiking.comehike.com/outdoors/parks/park.php?park_id=3 [R=301,L]
无论如何,当我把它变成我本地主机上的.htaccess时,它会起作用。
最终可能会更好,因为它的RegExp模式匹配可以执行以下操作:
RewriteEngine On
RewriteCond %{QUERY_STRING} ^park_id=([0-9]+)$
RewriteRule ^park.php http://hiking.comehike.com/outdoors/parks/park.php?park_id=%1 [R=301,L]
这将获取地址末尾的整数并将其传递给新地址(如果当然在原始地址中没有查询字符串,则实际上更容易)。