.htaccess ErrorDocument的相对路径

时间:2012-04-30 03:57:10

标签: .htaccess apache2

所以我有一个带有子目录的子域的apache服务器。我将目录转换为子域名。所以不是example.site.com/mycoolsite而是mycoolsite.example.com。或者换句话说,我将/var/www/mycoolsite转换为/var/mycoolsite。我使用以下代码使用.htaccess文件执行此操作。

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

大。现在它将目录转换为子域。现在的问题是.htaccess无法引用我为原始子域设置的ErrorDocument。我可以转到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

这些都不起作用。如果在没有第一个/或前一个..的情况下尝试它,它将在页面上显示错误文档行。我很难过。我希望我收集到足够的信息,但如果没有,请告诉我。

1 个答案:

答案 0 :(得分:3)

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

的虚拟php文件