繁体   English   中英

卡在.htaccess中的RewriteCond / RewriteRule中的重定向循环中

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM