Django AND .htaccess переписывает / перенаправляет, это возможно? - PullRequest
3 голосов
/ 27 мая 2010

Возможно ли, чтобы изменения в Apache htaccess вступили в силу до того, как они попадут в django?

Я хочу иметь возможность указать RewriteRules в файле htaccess, который имеет приоритет над django, и если ничего не совпадает, он отправляется в 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>

Спасибо

Ответы [ 3 ]

3 голосов
/ 28 мая 2010

Прежде всего, вам не хватает директивы WSGIProcessGroup. Без этого ваше приложение не будет работать в режиме демона, как вы, вероятно, ожидаете после определения директивы WSGIDaemonProcess.

Во-вторых, файл .htaccess даже не будет использоваться при использовании WSGIScriptAlias, за исключением статических каталогов, сопоставленных с директивами Alias.

Что вам нужно сделать, это использовать метод AddHandler для монтирования приложения WSGI с соответствующими правилами перезаписи, чтобы оно отображалось в корне сайта, как описано в:

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

1 голос
/ 28 мая 2010

Вы можете использовать Include для включения файла доступа в ваш файл конфигурации, но поскольку структура каталогов существует только в urls.py, вы не сможете использовать файл .htaccess. Вы всегда можете назвать свой включаемый файл .htaccess, но включение его в ваш VirtualHost, вероятно, лучший вариант.

0 голосов
/ 27 мая 2010

Я не понимаю, почему вы хотите сделать это в файле .htaccess. Вы должны сделать это в конфигурации виртуального хоста, которую вы вставили выше.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...