我从以下两个 .htaccess 文件收到“重定向过多”错误。
域名 1 上的 .htaccess
Redirect 301 / http://www.domain2.com/
域名 2 上的 .htaccess
RewriteEngine On
RewriteBase /
RewriteCond %{HTTP_HOST} !^www\.
RewriteRule (.*) http://www.%{HTTP_HOST}/$1 [L,R]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule .* /forum/ [L,R]
RedirectMatch permanent ^/$ /forum/
# Options +FollowSymlinks
RewriteCond %{HTTP_REFERER} badsite1\.com [NC,OR]
RewriteCond %{HTTP_REFERER} badsite2\.com [NC]
RewriteRule .* - [F]
有人知道过多重定向错误的原因吗?
答案1
您的网站在 domain2 中是否存在目录“/forum/”?如果不存在,则遵循RewriteCond
(重写条件)&RewriteRule
将始终导致重定向到/forum/
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule .* /forum/ [L,R]
这会导致无限重定向循环并引发too many redirects
错误。
根据您的补充评论,您说以下三行代码导致了重定向循环:
RewriteCond %{HTTP_REFERER} badsite1\.com [NC,OR]
RewriteCond %{HTTP_REFERER} badsite2\.com [NC]
RewriteRule .* - [F]
“badsite1.com”或“badsite2.com”是否也是您域名的一部分?例如,如果文字“badsite1.com”是“fred.com”,而您的域名是“myfred.com”,那么此条件将符合您网站的请求。
答案2
事实证明代码没有问题。可能是加载了不正确的代码的缓存副本并导致了错误。