所以我有一个htaccess重写,它使查询字符串指向这样的路径。
RewriteRule ^page/(.*)$ page.php?query=$1
这很好用,并且使用上述方法,我可以通过 page.php?query = 和 / page / query / < / em> ,但是我该怎么做,如果通过 page.php?query = 方法访问该页面,它将自动重定向到路径版本?
我尝试了以下操作,但我认为我写的不正确...
RewriteCond %{HTTP_HOST} ^www\.webaddress\.com\/page\.php\?query\=$
RewriteRule ^(.*)$ http://www.webaddress.com/page/$1 [R=301,L]
任何解决此问题的帮助将不胜感激。谢谢。
答案 0 :(得分:3)
您可以使用以下
RewriteEngine On
#url redirection from old url to the new one
#redirect /page.php?query=foo to /page/foo
RewriteCond %{THE_REQUEST} /page.php\?query=([^\s]+) [NC]
RewriteRule ^.+$ /page/%1? [L,R]
#url rewiring from new url to the old one
# rewrite /page/foo to /page.php?query=foo
RewriteRule ^page/(.*)$ page.php?query=$1 [L]
答案 1 :(得分:0)
在内部重写规则之前尝试一下。
RewriteEngine On
RewriteCond %{REQUEST_URI} ^(.+)\.php
RewriteCond %{QUERY_STRING} ^(.+)\=(.+)
RewriteRule ^ http://%{HTTP_HOST}/%1/%2/%3? [R=301]