
在我的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 處於什麼上下文?它在虛擬主機內嗎?
以下實現了相同的結果,但更好:
<VirtualHost *:80>
ServerName example.com
Redirect / http://www.example.com/
</VirtualHost>
<VirtualHost *:80>
ServerName www.example.com
DocumentRoot /var/www/something
</VirtualHost>
也沒有奇怪的副作用。