所以我有一个带有子目录的子域的 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无法引用我为原始子域设置的错误文档。我可以转到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
这些都不起作用。在没有前/
或前面..
的情况下尝试时,它将在页面上显示错误文档行。我被难住了。我希望我包含了足够的信息,但如果没有,请告诉我。
我不认为 apache 允许您引用当前document_root之外的文件。这是一个安全的事情。你可以做的是创建一个只包含一个include(../error/index.php)
的虚拟php文件