我正在尝试安装此.htaccess以通知我的用户网站维护。似乎第一个[L]没有工作,第二个重写正在做所有事情。
你们如何做网站维护信息?
RewriteEngine on
RewriteRule ^s/down$ index.html [L]
RewriteRule ^(.*)$ http://metaward.com/s/down [R=302,L]
答案 0 :(得分:6)
您不需要外部重定向。只需发送503 status code和您的错误文档。
RewriteCond %{ENV:REDIRECT_STATUS} !=503
RewriteRule ^(.*)$ /503.html [R=503,L]
ErrorDocument 503 /503.html
但是你需要Apache 2.x使用不同于3xx的R标志的不同状态代码。
答案 1 :(得分:5)
这似乎有效(但我必须在PHP中设置状态代码)
RewriteEngine on
RewriteCond %{REQUEST_URI} !^/static/.*$
RewriteCond %{REQUEST_URI} !^/media/.*$
RewriteRule .* down.php [L]
并在down.php中
<?php
header('HTTP/1.1 503 Service Temporarily Unavailable',true,503);
?>
这有什么问题吗?我的主要关注点是用户看到的内容(这就是我保留静态内容的原因)以及搜索引擎看到的内容(503状态代码)。
答案 2 :(得分:1)
当我想关闭它进行维护时,我在我的网站上使用的RewriteRules是这些:
RewriteCond %{REMOTE_ADDR} !=MY_IP_ADDRESS
RewriteRule ^$ /down.html [L]
RewriteCond %{REMOTE_ADDR} !=MY_IP_ADDRESS
RewriteRule [^/down.html$] /down.html [L]
(也许还没有完全“优化”,我应该说......但是每次我使用它时都会起作用(或者似乎)
除了down.html之外的所有东西都被重定向到down.html - 除了我,当然:我希望能够测试我正在进行的维护操作,显然
当我完成时,我只评论这四行。
答案 3 :(得分:0)
我使用Apache作为rails应用程序上ruby的代理。
我唯一要做的就是添加
ProxyPass /custom-errors !
ErrorDocument 503 /custom-errors/maintenance-message.html
到我的httpd.conf并确保:[Apache安装] /htdocs/custom-errors/maintenance-message.html存在。
答案 4 :(得分:0)
我没有看到有人使用Retry-After标头。我已经阅读了(但是我刚刚读完它时不再有链接了)你应该使用一个503组合的Retry-After n(n =秒数再次尝试;标题是3600小时。如果您在组合中使用503和Retry-After,特别是在您的robots.txt / sitemap上,如果您长时间不这样做,它不应该混淆SEO的链接和页面排名。