2015-11-25 37 views
1

我想將所有請求從根目錄(除根目錄文件以外)重定向到dev目錄。當從根文件夾重寫到子文件夾時無限循環

example.com/anythingexample.com/dev/index.php?url=anything

我在的public_html htaccess的

RewriteEngine on 
RewriteBase/
RewriteCond %{REQUEST_FILENAME} !-f 

RewriteCond %{REQUEST_FILENAME} !-d 

RewriteRule (.*) /dev/?url=$1 [QSA,NC,R] 

當我訪問http://example.com/anything我在做什麼錯了,它是造成死循環的錯誤?

謝謝!

+0

爲什麼你在這裏有'R'(重定向)標誌?它不會暴露你的內部網址嗎? – anubhava

回答

0

嘗試:

RewriteEngine on 
RewriteBase/
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_URI} !^/dev 

RewriteRule (.*) /dev/$1 [QSA,NC,R] 

的無限循環的原因可能是您的目標網址 「的/ dev/URL = $ 1嗎?」 被重定向到它自身。因爲如果「/ dev」不是真實的目錄,則規則中沒有條件阻止它重定向到自己。

example.com/anything 

被重定向到

example.com/dev/?url=anything 

以及在第二次迭代

example.com/dev/?url=anything 

被重定向到

example.com/dev/?url=dev 

.......

它會繼續循環直到最後一次迭代。

您可以通過添加下列條件的規則解決這個

@Hereblur是正確的,你應該增加:

RewriteCond %{REQUEST_URI} !^/dev 

,因爲它忽略了URI如果以「/ dev的」並跳過規則。

0

可能你忘了排除你的dev重定向。

RewriteCond %{REQUEST_URI} !^/dev/ 
相關問題