htaccess将查询字符串重定向到路径

时间:2018-06-22 23:23:07

标签: php apache .htaccess mod-rewrite query-string

所以我有一个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] 

任何解决此问题的帮助将不胜感激。谢谢。

2 个答案:

答案 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]