2014-09-24 48 views
0

我試着去爲我的網站創建維護頁面,並增加了以下爲.htaccess在.htaccess重定向循環滯留從的RewriteCond /重寫規則

##SETTINGS## 
Options +FollowSymLinks -MultiViews 
RewriteEngine On 
RewriteBase/
Allow From All 

RewriteCond   %{REMOTE_ADDR}  !^00\.00\.00\.00 
RewriteCond   %{REQUEST_URI}  !\.(jpe?g?|png|gif|css) [NC] 
RewriteCond   %{REQUEST_URI}  !^/maintenance.php [NC] 
RewriteRule   .*     /maintenance.php [R=302,L] 

## EXPIRES CACHING ## 
<IfModule mod_expires.c> 
ExpiresActive On 
ExpiresDefault "access 1 week" 
</IfModule> 

## ADDITIONAL REWRITE RULES BELOW HERE ## 

這適用於我的本地MAMP環境,但是當我將其上傳到我的託管服務提供商(GoDaddy),它會陷入無限重定向循環,並且維護頁面不會加載。將第一行改爲我自己的IP地址允許我訪問該網站(如預期的那樣),但其他人仍然陷在重定向循環中。

我按照指南moz.com進行了一些修改,以便在維護頁面上獲取圖像和css加載。

請幫助有需要的的n00b ...

編輯:添加我的.htaccess的頂部,這樣的人不認爲這就是爲什麼它不工作

EDIT2:添加了所有其他的重定向規則的要求

EDIT3:除去其它的重定向規則不相關的問題

+0

你的其他重寫規則是什麼? – 2014-09-24 16:33:12

+0

所有其他重寫工作正常,我不能看到任何會導致重定向循環。 – UndeadGeek 2014-09-24 16:50:48

回答

0

說實話,這些規則看起來很正確。實際上,除了在本地運行它們之外,您還可以使用類似http://htaccess.madewithlove.be/

這樣的東西來擦拭它們。在這種情況下,我建議您向GoDaddy諮詢此問題。他們有可能在全球範圍內爲您的帳戶設置了另一個配置集,這會影響您的規則。

+0

我可能不得不硬着頭皮,給Godaddy打電話,等待很多等待... – UndeadGeek 2014-09-24 16:42:18

0

規則看起來不錯,但我的猜測是要麼你的其他規則重定向回到維護.php以外的東西或您的maintenance.php文件重定向到某處。嘗試在Allow From All行下方添加此對:

RewriteRule ^maintenance.php - [L] 

以便您的其他規則無法應用。

+0

這裏的問題是我也被重定向到maintenance.php。理想情況下,我仍然需要在維護期間訪問網站。 – UndeadGeek 2014-09-24 16:40:37

+0

@UndeadGeek此規則不會重定向任何內容。它只是說「如果URL **是**'/ maintenance.php',不要做任何事情」 – 2014-09-24 16:58:45

+0

@UndeadGeek看起來像那些規則不會導致重定向循環。你確定maintenance.php中的東西沒有重定向嗎? – 2014-09-24 17:00:59

0

刪除RewriteRule上的[R]標誌修復了重定向循環。我還必須在頁面名稱前面刪除正斜槓,因爲由於RewriteBase已被設置爲「/」,所以一旦刪除[R]標誌,就會創建服務器錯誤。

維護頁面現在正確顯示,我可以從我自己的IP地址訪問整個站點。

改變

RewriteRule .* /maintenance.php [R=302,L] 

RewriteRule .* maintenance.php [L] 

猜猜它必須有一些奇怪的GoDaddy的設置,至少它爲我節省稱他們...

感謝您的幫助克里斯和喬恩林:)