在摆弄 public 树时修复 DOCUMENT_ROOT
Fix DOCUMENT_ROOT when fiddling with public tree
我必须处理不允许非 public 目录的托管服务。我通常可以使用 mod_rewrite
插入额外的目录级别:
# /home/foo/public_html/.htaccess
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteRule ^$ public/ [L]
RewriteRule (.*) public/ [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
实际上是保留的 Apache+PHP 变量,不能在 .htaccess
或 Apache 配置中被覆盖。 DOCUMENT_ROOT
indicates document root directory of your website.
您可以根据您的情况使用任何其他变量名称,例如 DOC_ROOT
。
我必须处理不允许非 public 目录的托管服务。我通常可以使用 mod_rewrite
插入额外的目录级别:
# /home/foo/public_html/.htaccess
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteRule ^$ public/ [L]
RewriteRule (.*) public/ [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
实际上是保留的 Apache+PHP 变量,不能在 .htaccess
或 Apache 配置中被覆盖。 DOCUMENT_ROOT
indicates document root directory of your website.
您可以根据您的情况使用任何其他变量名称,例如 DOC_ROOT
。