Правило перезаписи для страниц сайта вниз - PullRequest
5 голосов
/ 27 августа 2009

Я пытался установить этот .htaccess, чтобы уведомить моих пользователей об обслуживании сайта. Кажется, первая [L] не работает, а вторая перезапись делает все.

Как вы, ребята, делаете сообщения о поддержке сайта?

RewriteEngine on

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

Ответы [ 5 ]

6 голосов
/ 27 августа 2009

Вам не нужно внешнее перенаправление. Просто отправьте код состояния 503 и документ об ошибке.

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

Но вам нужен Apache 2.x, чтобы использовать другой код состояния с флагом R, отличным от 3xx.

5 голосов
/ 27 августа 2009

Это похоже на работу (но я должен установить код состояния в 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).

1 голос
/ 27 августа 2009

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 - конечно, кроме меня: я хочу иметь возможность тестировать операции обслуживания, которые я выполняю, очевидно,

И когда я закончу, я просто прокомментирую эти четыре строки.

0 голосов
/ 05 мая 2015

Я не вижу никого, кто бы использовал заголовок Retry-After. Я прочитал (но у меня нет ссылки, как я читал некоторое время назад), что вы должны использовать 503 в комбо с Retry-After n (n = количество секунд, чтобы повторить попытку; 3600 это час ) заголовок. Если вы используете 503 и Retry-After в комбинированном режиме, особенно в robots.txt / sitemap, он не должен связываться со ссылками и рейтингом страницы для SEO, если вы не оставляете его так долго.

0 голосов
/ 09 декабря 2014

Я использую Apache в качестве прокси для приложения ruby ​​on rails.

Единственное, что мне нужно было сделать, это добавить

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

На мой httpd.conf и убедитесь, что: [установка Apache] /htdocs/custom-errors/maintenance-message.html существует.

...