這裏是我的.htaccess文件:.htaccess - 如果rewriterule爲true,則停止處理?
Options +FollowSymlinks
RewriteEngine on
Rewritecond %{http_host} ^mysite.com [nc]
Rewriterule ^(.*)$ http://www.mysite.com/$1 [r=301,nc]
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule . /404.php
第一屆的RewriteCond /重寫規則塊是將用戶重定向到www,如果他們輸入的地址加www。
第二個rewritecond/rewriterule塊將用戶重定向到我創建的頁面,如果它們輸入了不存在的地址。
每這些規則適用於它自己:
如果我的.htaccess文件只包含第一個塊,然後將它成功地重定向到WWW地址非www地址。
如果輸入不存在的地址,用戶將被成功重定向到我的頁面404.php。
然而,如果.htaccess文件同時包含塊,並進入一個非www地址,則代替成功重定向到WWW地址,將出現以下情況:
(1)以下顯示的是在頁面上:
永久移動
該文檔已移至此處。
此外,嘗試使用ErrorDocument處理請求時遇到500內部服務器錯誤錯誤。
的Apache/1.3.41服務器在mysite.com端口80
(2)下面的條目在錯誤日誌中生成:
[週五5月4一時54分19秒2012] [錯誤] [客戶端109.109.109.109] mod_rewrite: 達到內部重定向的最大數量。假設配置錯誤。如果需要,使用'RewriteOptions MaxRedirects'來增加限制。
我認爲會發生什麼是無限循環以某種方式被生成。
我想知道是否告訴.htaccess文件停止處理命令,如果滿足第一個條件將解決問題。那麼有誰知道如何做到這一點?
(旁註。一般情況下,我找到的文檔在那裏上的.htaccess是絕對可怕的。我不知道其他人的感覺類似。)提前
感謝。
我把你的建議,所以我的文件的唯一變化是,第一重寫規則有以下幾種: 'Rewriterule ^(。*)$ http://www.mysite.com/$1 [r = 301,nc,L]' 現在一切似乎都正常。 謝謝。 – oyvey
無需重新迭代該網站。而且:Apache RewriteRules默認情況下是貪婪的。 ☞'重寫規則(。*)$ 1 [R = 404,L]' –