重写“网站关闭”页面的规则

时间:2009-08-26 22:14:37

标签: apache mod-rewrite maintenance

我正在尝试安装此.htaccess以通知我的用户网站维护。似乎第一个[L]没有工作,第二个重写正在做所有事情。

你们如何做网站维护信息?

RewriteEngine on

RewriteRule ^s/down$ index.html [L]
RewriteRule ^(.*)$ http://metaward.com/s/down [R=302,L]

5 个答案:

答案 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的链接和页面排名。