[英]Stuck in a redirect loop from RewriteCond/RewriteRule in .htaccess
我正在尝试为我的网站创建维护页面,并将以下内容添加到.htaccess中
##SETTINGS##
Options +FollowSymLinks -MultiViews
RewriteEngine On
RewriteBase /
Allow From All
RewriteCond %{REMOTE_ADDR} !^00\.00\.00\.00
RewriteCond %{REQUEST_URI} !\.(jpe?g?|png|gif|css) [NC]
RewriteCond %{REQUEST_URI} !^/maintenance.php [NC]
RewriteRule .* /maintenance.php [R=302,L]
## EXPIRES CACHING ##
<IfModule mod_expires.c>
ExpiresActive On
ExpiresDefault "access 1 week"
</IfModule>
## ADDITIONAL REWRITE RULES BELOW HERE ##
这适用于我的本地MAMP环境,但是当我将其上传到托管服务提供商(GoDaddy)时,它陷入了无限重定向循环,并且无法加载维护页面。 将第一行更改为我自己的IP地址可以使我访问站点(按预期方式),但其他人仍会陷入重定向循环。
我按照moz.com上的指南进行了一些更改,以在维护页面上加载图像和CSS。
请帮助有需要的n00b ...
编辑:添加了我的.htaccess的顶部,所以人们不认为这就是为什么它不起作用
EDIT2:根据要求添加了所有其他重定向规则
EDIT3:删除了与问题无关的其他重定向规则
老实说,这些规则看起来很正确。 实际上,除了在本地运行它们之外,您还可以始终使用http://htaccess.madewithlove.be/
在这种情况下,我建议您就此问题与GoDaddy取得联系。 他们可能在全局为您的帐户设置了另一个配置,这会影响您的规则。
规则看起来不错,但是我猜是您的其他规则正在重定向回不同于maintenance.php的其他内容,或者您的maintenance.php文件正在重定向到某个地方。 尝试Allow From All
行下面添加此代码:
RewriteRule ^maintenance.php - [L]
这样您的其他规则将不会被应用。
删除RewriteRule上的[R]标志已修复了重定向循环。 我还必须删除页面名称前的正斜杠,因为由于RewriteBase已经设置为“ /”,所以删除了[R]标志后就创建了服务器错误。
维护页面现在正确显示,我可以从自己的IP地址访问整个站点。
已变更
RewriteRule .* /maintenance.php [R=302,L]
至
RewriteRule .* maintenance.php [L]
猜猜它一定是GoDaddy的一些怪异设置,至少可以省去我的称呼...
谢谢克里斯和乔恩·林的帮助:)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.