代码之家  ›  专栏  ›  技术社区  ›  adamJLev

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

  •  3
  • adamJLev  · 技术社区  · 14 年前

    有没有可能让ApacheHTAccess重写在命中Django之前生效?

    我想能够说明 RewriteRules 在优先于django的htaccess文件中,如果没有匹配的内容,那么它将被调度到mod wsgi/django。

    我们将Apache2与mod wsgi一起使用,Apachevhost如下所示:

    <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 回复  |  直到 14 年前
        1
  •  3
  •   Graham Dumpleton    14 年前

    首先,您缺少wsgiprocessgroup指令。如果不这样做,您的应用程序将不会像您在定义wsgidaemonprocess指令后可能期望的那样以守护程序模式运行。

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

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

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

        2
  •  1
  •   Jack M.    14 年前

    你可以使用 Include 将访问文件包含到配置文件中,但由于目录结构仅存在于 urls.py ,您将无法使用 .htaccess 文件。你总是可以 名称 您的包含文件 HTAccess 但将其包含在虚拟主机中可能是最佳选择。

        3
  •  0
  •   Daniel Roseman    14 年前

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