.htaccess - 如果文件或目录不存在,则重定向

时间:2015-11-25 23:14:10

标签: php .htaccess mod-rewrite redirect

我有一个简单的CMS文件结构:

application/
data/
src/
web/
.htaccess
index.php

我想将所有请求重定向到/index.php,如果文件或目录存在,那么我想将所有请求重定向到/ web。 例: http://localhost.com/news/example-news到index.php / http://localhost.com/images/logo.png到web / images / logo.png

现在我的.htaccess看起来:.htaccess

2 个答案:

答案 0 :(得分:2)

试试这个......

RewriteEngine on
RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^.*$ /web [L]

RewriteRule ^.*$ index.php [L]

第一条规则将捕获可以映射到现有文件或目录的任何请求,并重写到Web文件夹。第二条规则(没有重写)将捕获剩余的并重写index.php

答案 1 :(得分:1)

您只需将代码更改为这样。

更改此

RewriteCond %{REQUEST_URI} !^/index.php

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d

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

到这个

RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteCond %{REQUEST_URI} !^/index.php
RewriteRule ^(.*)$ /web/index.php [L]

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