使用mod_rewrite强制美化URL

时间:2009-06-25 15:48:58

标签: apache mod-rewrite

所以我把丑陋的php网址重写为更漂亮的东西:

RewriteEngine On
RewriteRule ^main/photo([^/\.]+)/?.html$ main/details.php?gid=$2pid=$1

然而,现在我想强迫任何前往

的人
http://www.example.com/main/details.php?gid=20&pid=5

重定向到

htto://www.example.com/main/photo5.html

我尝试了以下RewriteCond:

RewriteCond %{REQUEST_URI} ^/main/details\.php [NC]
RewriteRule ^main/details.php?gid=(.*)&pid=(.*) http://www.example.com/main/photo$1.html [R=301,L]

但那没用。有什么想法吗?

1 个答案:

答案 0 :(得分:0)

您需要查看request line以确定当前请求URI是否是原始URI。此外,您需要使用RewriteCond指令来测试URI的查询:

RewriteCond %{THE_REQUEST} ^GET\ /main/details\.php
RewriteCond %{QUERY_STRING} ^(([^&]*&)*)pid=([0-9]+)(&.*)?$
RewriteRule ^main/details\.php$ /main/photo%3.html? [L,R=301]