Django和.htaccess重写/重定向,这可能吗?

时间:2010-05-27 15:38:32

标签: django apache mod-rewrite mod-wsgi

是否有可能让Apache htaccess重写在点击django之前生效?

我希望能够在htaccess文件中指定RewriteRules,该文件优先于django,如果没有匹配则会被调度到mod_wsgi / django。

我们正在使用带有mod_wsgi的apache2,而apache vhost看起来像这样:

<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>

由于

3 个答案:

答案 0 :(得分:3)

首先,您缺少WSGIProcessGroup指令。如果没有这个,你的应用程序将不会像你在定义WSGIDaemonProcess指令后所期望的那样以守护进程模式运行。

其次,除了使用Alias指令映射的静态目录外,使用WSGIScriptAlias时甚至不会查询.htaccess文件。

您需要做的是使用AddHandler方法来安装WSGI应用程序,并使用相关的重写规则使其显示在站点的根目录,如下所述:

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

答案 1 :(得分:1)

您可以使用Include在配置文件中包含访问文件,但由于目录结构仅存在于urls.py中,因此您将无法使用.htaccess文件。您始终可以命名包含文件.htaccess,但将其包含在您的VirtualHost中可能是最佳选择。

答案 2 :(得分:0)

我不明白你为什么要在.htaccess文件中这样做。您应该在上面粘贴的虚拟主机配置中执行此操作。