在我的PHP应用程序的.htaccess文件中,我使用了一种简单的重写方式来转换我的URL:
/shop/hats/detroit/
收件人:
index.php?url=/shop/hats/detroit/
使用以下重写规则:
# Rule 1
RewriteRule ^(.*)$ /repos/nvp/httpdocs/index.php?url=/$1 [L,QSA]
我希望以下重写也能起作用:
# Rule 2
RewriteRule ^pic/(.*)$ /repos/nvp/httpdocs/get_image.php?pic=$1 [L,QSA]
但是这两个规则有点覆盖或相互冲突。他们各自工作,但不在一起工作。如何仅在URL以 pic / 开头的情况下使用规则2而不是规则1来使用所有url来使用规则1?
答案 0 :(得分:0)
这是因为模式(.*)
与所有uri匹配。
为了避免规则被压倒,您需要对规则重新排序,并将特定规则排在第一位。
# specific rules
RewriteRule ^pic/(.*)$ /repos/nvp/httpdocs/get_image.php?pic=$1 [L,QSA]
#catch-all rules
RewriteRule ^(.*)$ /repos/nvp/httpdocs/index.php?url=/$1 [L,QSA]