htaccess自定义目录,错误404

时间:2014-09-04 14:09:21

标签: .htaccess http-status-code-404

我有一个网站,我的每个用户都有一个安装在不同目录中的cms,结构如下:

/ (root)
/cms_user1/
/cms_user1/404.php
/cms_user1/.htaccess
/cms_user2/
/cms_user2/404.php
/cms_user2/.htaccess

在每个.htaccess文件中都有:

ErrorDocument 404 /404.php

问题在于,以这种方式,页面404.php没有加载到 /cms_client1/404.php ,而是在根目录中,即 /404.php

有一种方法可以自动加载用户目录中的404.php,而不指定目录名称

PS:我到目前为止找到的唯一方法是在每个.htaccess中指定目录名称(在我的情况下,这不是最佳选择,因为我必须编辑每个htaccess),如下所示:

ErrorDocument 404 /directory/404.php

1 个答案:

答案 0 :(得分:4)

坏消息:使用ErrorDocument你无法做到 好消息:可以使用mod_rewrite规则。

在你问题中显示的每个.htaccess中,你可以有这样的规则:

RewriteEngine On

# Determine the RewriteBase automatically/dynamically
RewriteCond $0#%{REQUEST_URI} ^([^#]*)#(.*)\1$
RewriteRule ^.*$ - [E=BASE:%2]

# if request is not for a file
RewriteCond %{REQUEST_FILENAME} !-d
# if request is not for a directory
RewriteCond %{REQUEST_FILENAME} !-f
# forward it to 404.php in current directory
RewriteRule . %{ENV:BASE}/404.php [L]