【问题标题】:Django AND .htaccess rewrites/redirects, is this possible?Django AND .htaccess 重写/重定向,这可能吗?
【发布时间】:2010-05-27 15:38:31
【问题描述】:

是否可以让 Apache htaccess 重写在它到达 django 之前生效?

我希望能够在优先于 django 的 htaccess 文件中指定 RewriteRules,如果没有匹配项,则将其分派到 mod_wsgi/django。

我们将 apache2 与 mod_wsgi 一起使用,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>

谢谢

【问题讨论】:

标签: django apache mod-rewrite mod-wsgi


【解决方案1】:

首先,您缺少 WSGIProcessGroup 指令。否则,您的应用程序将不会像您在定义 WSGIDaemonProcess 指令后所期望的那样以守护程序模式运行。

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

您需要做的是使用 AddHandler 方法挂载 WSGI 应用程序,并使用相关的重写规则使其出现在站点的根目录中,如下所示:

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

【讨论】:

    【解决方案2】:

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

    【讨论】:

      【解决方案3】:

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

      【讨论】:

      • 能够在不打扰系统管理员的情况下修改重写,并能够对文件进行源代码控制。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-02-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-12-21
      相关资源
      最近更新 更多