RewriteRule翻译网址以使用不同的php文件

时间:2018-06-29 14:12:36

标签: .htaccess mod-rewrite

在我的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?

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]