2010-10-04 49 views
0

我正在嘗試爲Q設置一個URL重定向&我正在爲「船舶修復」設置一個站點。我想boatrepaired.comwww.boatrepaired.com。我通常是一個PHP的傢伙,所以我有點與OSQA使用的python等混淆。我將此添加到我的Apache的conf文件...使用Python/Django/Mod-Rewrite進行URL重定向

<Directory /opt/OSQA/> 
RewriteEngine On 
RewriteBase/
RewriteCond %{HTTP_HOST} ^boatrepaired\.com [NC] 
RewriteRule ^(.*)$ http://www.boatrepaired.com/$1 [L,R=301] 
</Directory> 

它有點通過發送boatrepaied.com到...... www.boatrepaired.com/osqa.wsgi/

如果我在第5行中刪除掉了$ 1個信息工作除了它完美重定向大家回到首頁。任何幫助,將不勝感激。

感謝,

克里斯

回答

0

OSQA是基於Django的,Django的,並可以自動爲你做這個(我敢肯定,這是由默認OSQA啓用)。

如果沒有,這個設置添加到你的Django設置模塊:

如果PREPEND_WWW爲True,網址 缺乏領導將 重定向到相同的URL與 領導「的「www。」 www。「leading」www。「

並確保django.middleware.common.CommonMiddleware已啓用。兩個域

<VirtualHost ..> 
    ServerName boatrepaired.com 

    Redirect permanent/http://www.boatrepaired.com/ 
</VirtualHost> 

<VirtualHost ..> 
    ServerName www.boatrepaired.com 

    ... basic wsgi/django config ... 
</VirtualHost> 

所以單獨的虛擬主機,從「錯誤」一個正確的一個永久重定向:

+0

完美!謝謝! – 2010-10-04 17:03:49

0

爲什麼不完全在Apache中解決這個問題。它將適用於域內的所有路徑,而不僅僅是/

0

如果你想使用Apache的重寫,那麼你的問題與重寫規則行有關,不能正確地提取URL。 Django需要比Apaache站點上給出的示例更復雜的正則表達式。例如,對於WSGI你可以這樣對重定向http://example.comhttp://www.example.com

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

其中$ 2是正則表達式,這是要附加到www.example.com部分的第二場比賽。