mod_rewrite如果存在则返回文件,否则返回CMS

时间:2012-05-12 15:08:44

标签: .htaccess mod-rewrite

我正在尝试让mod_rewrite在内容目录中查找文件,并在无法找到它的情况下调用我的CMS,但我无法让它工作。我在这里尝试了几个类似问题的答案,但似乎都没有正常工作。

我的.htaccess文件如下所示:

RewriteEngine on
RewriteBase /

RewriteCond %{DOCUMENT_ROOT}/content/$1 -f
RewriteRule ^(.*)$ %{DOCUMENT_ROOT}/content/$1 [QSA,L]

RewriteRule ^.*$ index.php [QSA,L]

我认为在我的第一条规则中添加[L]后缀意味着它不会执行进一步的规则,但无论是否存在文件,它似乎都会调用我的CMS。如果我注释掉第二条规则,则返回文件,但显然CMS不是。我也尝试过添加

RewriteCond %{DOCUMENT_ROOT}/content/$1 !-f

在第二条规则之前,但它似乎没有任何区别。

我还想检查目录是否存在(即-d),但我还没有放入该代码,因为我甚至无法让文件工作!

谢谢!

1 个答案:

答案 0 :(得分:2)

RewriteEngine on
RewriteBase /

RewriteRule ^content/ - [L]

RewriteCond %{DOCUMENT_ROOT}/content/$1 -f [OR]
RewriteCond %{DOCUMENT_ROOT}/content/$1 -d
RewriteRule ^(.*)$ /content/$1 [L]

RewriteRule ^.*$ index.php [QSA,L]