2010-05-27 29 views
3

是否有可能讓Apache htaccess重寫在django命中之前生效?Django和.htaccess重寫/重定向,這可能嗎?

我希望能夠在htaccess文件中指定RewriteRules,該文件優先於django,如果沒有匹配,則將其分派到mod_wsgi/django。

我們使用的是與mod_wsgi的的Apache2和apache的虛擬主機是這樣的:

<VirtualHost *:80> 

    DocumentRoot /usr/local/www/site/static 

    Alias /css/ /usr/local/www/site/static/css/ 
    Alias /js/ /usr/local/www/site/static/js/ 
    Alias /img/ /usr/local/www/site/static/img/ 
    Alias /flash/ /usr/local/www/site/static/flash/ 

    <Directory /usr/local/www/site/static> 
     AllowOverride All 
     Order allow,deny 
     Allow from all 
    </Directory> 

    WSGIDaemonProcess mallorca-site threads=15 
    WSGIScriptAlias//usr/local/www/site/config/dev/dev.wsgi 

</VirtualHost> 

感謝

+0

相關:HTTP:// serverfault.com/questions/71598/django-htaccess – miku 2010-05-27 21:17:11

回答

3

首先你缺少WSGIProcessGroup指令。沒有這些,你的應用程序就不會像守護進程模式那樣運行了,正如你在定義WSGIDaemonProcess指令之後所期望的那樣。

其次,使用WSGIScriptAlias時,甚至不會查詢.htaccess文件,除了使用Alias指令映射的靜態目錄。

你需要做的是安裝WSGI應用程序,與相關重寫規則得到它出現在網站的根目錄,文件使用的AddHandler方法:

http://code.google.com/p/modwsgi/wiki/ConfigurationGuidelines#The_Apache_Alias_Directive

0

我不明白你爲什麼要這樣做在.htaccess文件。您應該在上面粘貼的虛擬主機配置中執行此操作。

+4

爲了能夠修改重寫而不打擾系統管理員,並能夠源代碼控制文件。 – adamJLev 2010-05-28 14:54:38

1

您可以使用Include包括訪問文件到您的配置文件,但由於目錄結構只有在urls.py存在,你將無法使用.htaccess文件。您可以隨時名稱您的包含文件.htaccess,但將其包括在您的VirtualHost內可能是最好的選擇。