Временный редирект на страницу обслуживания - PullRequest
9 голосов
/ 14 октября 2011

Я пытаюсь написать правило для перенаправления всех URL-адресов на временную страницу, чтобы можно было выполнить какое-то обновление сайта, но это заканчивается бесконечным циклом.

  RewriteCond %{HTTP_HOST} ^(.*)mysite\.com$
  RewriteCond %{REQUEST_URI} !^(.*)temp$
  RewriteRule ^(.*)$ http://www.mysite.com/temp [R=307,L]

Как проверить, является ли это временной страницей?

Ответы [ 3 ]

10 голосов
/ 14 октября 2011

Вам нужно написать правило для всех запросов, кроме файла обслуживания.

.htaccess должен быть:

RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_URI} !^/maintenance\.html$
RewriteRule ^(.*)$ http://domain.com/maintenance.html [R=307,L]
1 голос
/ 14 февраля 2017

Работает, я пробовал.Он перенаправит все запросы на страницу обслуживания.

    <IfModule mod_rewrite.c>
 RewriteEngine on
 RewriteCond %{REMOTE_ADDR} !^123\.456\.789\.000
 RewriteCond %{REQUEST_URI} !/maintenance.html$ [NC]
 RewriteCond %{REQUEST_URI} !\.(jpe?g?|png|gif) [NC]
 RewriteRule .* /maintenance.html [R=302,L]
</IfModule>
1 голос
/ 21 сентября 2012

Что я делаю, так это перенаправляю весь трафик на страницу maintenance.html, когда он не приходит с моего IP.

Первое условие перезаписи позволяет избежать бесконечного цикла.

RewriteCond %{REQUEST_URI} !/maintenance.html$ 
RewriteCond %{REMOTE_ADDR} !^172\.16\.254\.1$
RewriteRule $ /maintenance.html [R=302,L] 
...