我有一个网站,我的每个用户都有一个安装在不同目录中的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
答案 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]