如果目录存在,则RewriteRule有效

时间:2014-07-14 22:40:09

标签: .htaccess mod-rewrite

我有以下我的.htacces文件:

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(blog)/([^/\.]+)/?$ index.php?blog=$2
RewriteRule ^(tag)/([^/\.]+)/?$ index.php?tag=$2

当我有一个href到/ blog / blog-title的链接时,我得到404 Not Found但是当我点击/ href为/ tag / tag-title的链接时,它会显示我带有该标签的所有帖子。奇怪的是,如果我在我的主目录中创建一个名为blog的文件夹,/ blog / blog-title将起作用!

为什么会这样,为什么我必须为博客而不是标签?

1 个答案:

答案 0 :(得分:0)

条件仅适用于第一条规则。如果您希望应用每个规则,则需要重复重写条件。

虽然我不确定为什么它最初没有工作,因为在任何一种情况下都不存在/blog/blot-title,你实际上并不需要条件,因为模式是足够的。实际上你可以只使用一个规则:

RewriteEngine On
RewriteRule ^(blog|tag)/([^/\.]+)/?$ /index.php?$1=$2 [L]