我正在尝试为我的网站创建维护页面,并将以下内容添加到.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:删除了与问题无关的其他重定向规则
答案 0 :(得分:0)
说实话,这些规则看起来非常正确。实际上,除了在本地运行它们之外,您总是可以使用http://htaccess.madewithlove.be/
之类的东西对它们进行lint在这种情况下,我建议与GoDaddy联系,讨论这个问题。他们可能会为您的帐户全局设置另一个配置集,这会影响您的规则。
答案 1 :(得分:0)
规则看起来很好,但我的猜测是你的其他规则要么重定向到maintenance.php以外的东西,要么你的maintenance.php文件重定向到某个地方。请尝试在Allow From All
行下方添加此内容:
RewriteRule ^maintenance.php - [L]
这样您的其他规则就不会被应用。
答案 2 :(得分:0)
删除RewriteRule上的[R]标志已修复重定向循环。我还必须在页面名称之前删除正斜杠,因为RewriteBase已经被设置为&#34; /&#34;,因为我删除了[R]标志后创建了服务器错误。
维护页面现在正确显示,我可以从我自己的IP地址访问整个站点。
更改
RewriteRule .* /maintenance.php [R=302,L]
到
RewriteRule .* maintenance.php [L]
猜猜它一定是一些奇怪的GoDaddy设置,至少它让我省去了它们......
感谢Chris和Jon Lin的帮助:)