.htaccess RewriteRule如果存在于子目录中

时间:2013-06-13 10:26:39

标签: .htaccess mod-rewrite url-rewriting

我有.htaccess和mod_rewrite的一些经验,但我不能让它工作。基本上我不是所有的URL都重定向到index.php除了那些指向“public”子目录中的现有文件的人。

例如,如果我有像/public/logo.png这样的文件,我想要这个:

http://example.com/logo.png - > /public/logo.png http://example.com/logo2.png - > index.php(logo2.png不存在) http://example.com/whatever - >的index.php

谢谢:)

2 个答案:

答案 0 :(得分:2)

RewriteEngine on

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

RewriteCond %{REQUEST_URI} !^/index\.php$
RewriteRule ^(.*)$ /index.php [R=301,L]

答案 1 :(得分:2)

感谢Amine的帮助,我终于解决了这个问题,尽管这看起来很混乱:

RewriteEngine On

RewriteCond %{REQUEST_FILENAME} -f
RewriteRule ^(.*)$ - [L]

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

RewriteRule ^(.*)$ /index.php [L]

希望有所帮助