htaccess - 检查当前目录和子目录中是否存在文件,如果没有重定向到404页面

时间:2014-07-01 00:31:04

标签: apache .htaccess mod-rewrite rewrite

我正在尝试在我的.htaccess文件中执行操作,检查是否存在多个文件 - 以及它们是否未重定向到404页面。

请求网址 //mydomain.com/page-name

首先,它将检查此文件是否存在。如果该文件不存在,它将检查该文件是否存在于子目录中;它将检查以下文件是否存在://mydomain.com/h/page-name

最后,如果该文件不存在,它会将用户重定向到位于//mydomain.com/404.php的404。

是否可以通过多个条件来执行重定向,如我在此处所述?有更好的方法/解决方案吗?

1 个答案:

答案 0 :(得分:1)

经过一番乱搞之后,我发现了它。希望它可以帮助别人!您可以在.htaccess中放置以下代码以实现此目的。

RewriteEngine On

# if file exists in root directory
# redirect to file in root directory
RewriteCond  %{DOCUMENT_ROOT}/$1 -f
RewriteRule  ^(.*)$  $1  [L,QSA]

# if file exists in /h/ directory
# redirect to file in /h/ directory
RewriteCond  %{DOCUMENT_ROOT}/h/$1 -f
RewriteRule ^(.*)$ h/$1 [L,QSA]

# if we've gotten this far let's just
# send 'em to the 404
RewriteRule ^(.*)$ 404.php [L,QSA]