2015-10-16 120 views
0

我有我的Django應用程序託管與Apache和mod_wsgi。它工作得很好,直到我想創建一個從「www」到「www」的301重定向。我改變的.htaccessDjango重定向301爲www子域

RewriteEngine on 
RewriteCond %{HTTP_HOST} ^example.com 
RewriteRule ^(.*)$ http://www.example.com$1 [R=301,L] 

現在,它總是重定向從www.example.com到:

http://www.example.com/index.wsgi/index.wsgi/ 

而且我得到找不到頁面錯誤。我做錯了什麼?我該如何解決這個問題?

回答

0

當您在一個域內使用重定向時,您可以得到類似無限循環的東西。

例如,例如,您的請求第一次可以正常工作。 但重定向後RewriteCond會再次檢查當前主機==你的主機。 這是真的,所以您的請求將添加您在之前的請求中收到的全部內容。

爲了防止這種情況,你可以使用類似如下:

RewriteCond %{ENV:REDIRECT_FINISH} !^$ 
RewriteRule^- [L] 
RewriteCond %{HTTP_HOST} ^example.com$ [NC] 
RewriteRule ^(.*)$ http://www.example.com$1 [R=301,L,E=FINISH:1] 

前兩行幫助您防止無限循環。

+0

謝謝你的回答,但這不起作用。有沒有辦法取消重定向,就好像我從不編輯.htaccess? – Swallow

+0

究竟doens't工作?這個規則是不是重定向你? –

+0

它總是從example.com和www.example.com重定向到www.example.com/index.wsgi/index.wsgi/ – Swallow