2012-04-30 64 views
2

所以我有一个带有子目录子域的apache服务器。我把我的目录变成子域名。所以,而不是example.site.com/mycoolsite它是mycoolsite.example.com。换句话说,我把/var/www/mycoolsite变成/var/mycoolsite。我使用下面的代码来执行.htaccess文件。.htaccess ErrorDocument的相对路径

RewriteCond %{HTTP_HOST} ^mycoolsite.site.com$ [NC] 
RewriteCond %{REQUEST_URI} !^/mycoolsite/ 
RewriteRule ^(.*)$ /mycoolsite/$1 [L] 

大。现在它将目录变成子域。现在的问题是.htaccess无法引用我的原始子域的ErrorDocument I设置。我可以去example.site.com/mycoolsite/aNonExistantDirectory/并得到正确的404我已经安装,但是当我尝试mycoolsite.site.com/aNonExistantDirectory/时,我得到了基本的服务器404错误页面,而不是我已经设置的页面。两者都在同一台服务器上。为了解决这个问题,我可以制作一份错误文档的副本,并将它们放在/mycoolsite/目录中,但我希望我可以简单地引用原始错误文档。

的问题是,我不知道如何引用错误文件中/var/www/error//var/www/mycoolsite/我已经试过:那些工作

ErrorDocument 404 ../error/index.php?p=404 
ErrorDocument 404 /www/error/index.php?p=404 
ErrorDocument 404 www/error/index.php?p=404 
ErrorDocument 404 error/index.php?p=404 
ErrorDocument 404 /error/index.php?p=404 

无。在没有第一个/或之前的..的情况下尝试时,它将在页面上显示错误文档行。我很难过。我希望我收录了足够的信息,但如果没有,请告诉我。

+2

我不认为apache允许您引用当前document_root之外的文件。这是一个安全的事情。你可以做的是创建一个只包含一个'include(../ error/index.php)'的虚拟php文件。 – Gerben

+0

这个工程!如果你想把它作为答案,我会接受它。 – Err

+0

很高兴帮助.. – Gerben

回答

3

我不认为apache允许您引用当前document_root之外的文件。这是一个安全的事情。你可以做的是创建一个虚拟的php文件,其中只包含一个include(../error/index.php)