RewriteEngine在添加新的RewriteConds之后搞砸了第一个RewriteConds

时间:2016-10-25 11:11:16

标签: php apache .htaccess mod-rewrite url-rewriting

我是网上重写的新手,我今天遇到了一个无法找到解决方案的问题。

这是我的.htaccess RewriteConds 正在工作

Options +FollowSymlinks
RewriteEngine On

RewriteCond %{REQUEST_URI} models/([a-z\-A-Z]+)/([a-z\-A-Z]+)
RewriteRule (.*) p.php?model=%1&media=%2 [L]

RewriteCond %{REQUEST_URI} models/([a-z\-A-Z]+)
RewriteRule (.*) orderby.php?model=%1 [L]

然而,当我添加一个新的RewriteCond以将models.php重定向到website.com/models时。它有效,但RewriteCond轰鸣声不再起作用了。

RewriteCond %{REQUEST_URI} models
RewriteRule (.*) models.php [L]

任何人都知道我做错了什么?

1 个答案:

答案 0 :(得分:1)

您需要在正则表达式中使用锚点以避免匹配不需要的部分:

Options +FollowSymlinks -MultiViews
RewriteEngine On

RewriteCond %{REQUEST_URI} /models/([a-z\-A-Z]+)/([a-z\-A-Z]+)/?$ [NC]
RewriteRule . p.php?model=%1&media=%2 [L,QSA]

RewriteCond %{REQUEST_URI} /models/([a-z\-A-Z]+)/?$ [NC]
RewriteRule . orderby.php?model=%1 [L,QSA]

RewriteCond %{REQUEST_URI} /models/?$ [NC]
RewriteRule . models.php [L]