当使用Alias
指令将 URL 映射到文档根目录之外的目录时,文档根目录中的 .htaccess 文件似乎不适用于这些请求。
例如,如果php_flag display_errors off
在 /home/user/document_root/.htaccess 中设置,但访问 www.example.com/aliased_url/phpinfo.php,则如果全局 PHP 设置如此,则 display_errors 将为“on”,并且它不会像 www.example.com/phpinfo.php 那样被覆盖。
有没有办法可以改变这种行为(或实现这一点)而不使用符号链接?
编辑于2016年2月13日:
目标是创建一个适用于所有站点的 phpinfo 文件,以显示该特定站点的有效配置(这可能会受到使用 htaccess 修改 php.ini 值的开源 CMS 的影响)。
答案1
根据设计,.htaccess 文件确实只会根据文件系统中用于处理请求的位置来影响 Apache 的行为。
当你想要更改特定 VirtualHost 或基于 URL 位置的设置时,你需要遵循 最佳实践无论如何,将您的配置指令移动到实际的 Apache 配置文件(并完全禁止 .htaccess 文件)。
在这种情况下,这将解决您的问题,因为您不再依赖文件系统位置来使您的指令生效......
<VirtualHost *:80>
ServerName www.example.com
ServerAlias example.com
DocumentRoot /var/www/example.com/
Alias /scripts/ /var/www/scripts/
php_flag display_errors off
</VirtualHost>
如果你不是系统管理员,并且无权访问你的 Apache 配置,那么你的问题就不会是关于主题但这不是重点,您只能通过在 Alias 目录中创建一个(复制)文件来解决问题.htaccess
。根据AllowOverride
指示为您配置了真正的管理员,您通常可以将 .htaccess 文件放置在 Apache 有权访问的任何目录和子目录中。您不受 DocumentRoot 的限制。