5

我试图安装此 .htaccess 以通知我的用户进行站点维护。似乎第一个 [L] 不起作用,第二个重写正在做所有事情。

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

RewriteEngine on

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

5 回答 5

6

您不需要外部重定向。只需发送503 状态代码和您的错误文档。

RewriteCond %{ENV:REDIRECT_STATUS} !=503
RewriteRule ^(.*)$ /503.html [R=503,L]
ErrorDocument 503 /503.html

但是您需要 Apache 2.x 使用带有 R 标志而不是 3xx 的不同状态代码。

于 2009-08-26T22:19:20.603 回答
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 状态代码)。

于 2009-08-26T22:34:02.773 回答
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 - 当然,除了我:我希望能够测试我正在做的维护操作,显然

并且当我完成时,我只是评论这四行。

于 2009-08-26T22:17:22.433 回答
0

我使用 Apache 作为 ruby​​ on rails 应用程序的代理。

我唯一要做的就是添加

ProxyPass /custom-errors !
ErrorDocument 503 /custom-errors/maintenance-message.html

到我的 httpd.conf 并确保:[Apache 安装]/htdocs/custom-errors/maintenance-message.html 存在。

于 2014-12-09T20:16:17.517 回答
0

我没有看到任何人使用 Retry-After 标头。我已经读过(但我之前读过它时不再有链接)你应该使用 503 和 Retry-After n 组合(n = 重试的秒数;3600 是一个小时) 标题。如果您在组合中使用 503 和 Retry-After,尤其是在您的 robots.txt/sitemap 上,如果您长时间不这样做,它不应该与 SEO 的链接和页面排名混淆。

于 2015-05-05T19:06:53.240 回答