在我的httpd.conf
我有:
<FilesMatch "^\.ht">
Order allow,deny
Deny from all
</FilesMatch>
在我的.htaccess
档案里有:
RewriteEngine On
RewriteBase /
RewriteCond %{HTTP_HOST} !^www\. [NC]
RewriteRule ^ http://www.%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
当我通过 HTTP 访问时,example.com/.ht
我希望重定向到www.example.com/.ht
,但 RewriteRule 却从未发生。客户端从未重定向到 www。在所有其他情况下,客户端都会正确重定向。
我没有任何 ErrorDocument 指令。
只是想知道为什么会发生这种情况以及如何纠正 403 上的这种行为。
答案1
由于您可以访问 httpd.conf,因此没有理由使用 .htaccess。
FilesMatch 处于什么上下文中?它在 vhost 内部吗?
以下实现相同的结果,但效果更好:
<VirtualHost *:80>
ServerName example.com
Redirect / http://www.example.com/
</VirtualHost>
<VirtualHost *:80>
ServerName www.example.com
DocumentRoot /var/www/something
</VirtualHost>
也没有任何奇怪的副作用。