2011-10-14 103 views
8

我正在嘗試編寫一個規則來將所有URL重定向到一個臨時頁面,以便可以完成某些站點更新操作,但它會以無限循環結束。臨時重定向到維護頁面

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

如何檢查它是否是臨時頁面?

回答

10

您需要爲維護文件以外的所有請求編寫規則。

的.htaccess應該是:

RewriteEngine On 
RewriteBase/
RewriteCond %{REQUEST_URI} !^/maintenance\.html$ 
RewriteRule ^(.*)$ http://domain.com/maintenance.html [R=307,L] 
1

我要做的是將所有流量重定向到一個maintenance.html頁面時,它不是從我的IP到來。

第一個重寫條件避免了無限循環。

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

它的工作原理,我試過了。它會將所有請求重定向到維護頁面。

<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>