【发布时间】:2018-09-09 18:01:19
【问题描述】:
我必须处理不允许非公共目录的托管服务。我通常可以使用mod_rewrite 插入一个额外的目录级别:
# /home/foo/public_html/.htaccess
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteRule ^$ public/ [L]
RewriteRule (.*) public/$1 [L]
</IfModule>
...所以http://example.com/test.php 加载/home/foo/public_html/public/test.php 而不是/home/foo/public_html/test.php。但这不会改变 DOCUMENT_ROOT 环境变量的值。
有没有办法更改.htaccess 文件中的变量?我的尝试并没有走得太远——我设置的值:
SetEnv DOCUMENT_ROOT /home/foo/public_html/public
… 以REDIRECT_DOCUMENT_ROOT 结尾。
【问题讨论】:
-
您真正需要
DOCUMENT_ROOT做什么? -
@MarcinOrlowski 我知道你的意思,没有它我当然可以生活。但我对这个特定的工具很好奇。
-
还不错:-)
-
DOCUMENT_ROOT是保留的 Apache 变量,无法在 .htaccess 中覆盖。您可以使用任何其他变量名称,例如DOC_ROOT -
@anubhava 随意发布它作为答案,我很乐意接受。
标签: apache .htaccess apache2.4