Перенаправить запрос подпапки к Пассажиру - PullRequest
0 голосов
/ 29 октября 2018

Я хочу перенаправить все запросы, например mysite.com/subfolder/..., в приложение Django через Passenger и все другие запросы на сайт, работающий под некоторыми php cms.

Структура файла:

  • .htaccess
  • подпапка /
    • .htaccess
  • некоторые файлы cms

Содержимое root .htaccess:

RewriteEngine on

... RewriteConds and RewriteRules generated by php cms

Содержимое subfolder/.htaccess:

PassengerAppRoot "/home/username/djangoapplication"
PassengerPython "/home/username/virtualenv/webapp/2.7/bin/python2.7"

Проблема в корне .htaccess. Когда root .htaccess пуст (включает только RewriteEngine on), запросы типа mysite.com/subfolder/... обрабатываются subfolder/.htaccess и загрузкой приложения Django. Но когда root .htaccess содержит строки, сгенерированные php cms, все запросы, такие как mysite.com/subfolder/..., приводят к ошибке 404 из cms.

Итак, я хочу отфильтровать запросы, например, от mysite.com/subfolder/... до subfolder/.htaccess, прежде чем RewriteRule s из cms заменит его страницей с ошибкой 404, но я не могу понять, как это сделать.

1 Ответ

0 голосов
/ 29 октября 2018

Если корневой файл .htaccess содержит только директивы mod_rewrite, то вы можете полностью переопределить корневой файл .htaccess, просто включив механизм перезаписи в /subfolder/.htaccess.

Например:

RewriteEngine On    

PassengerAppRoot "/home/username/djangoapplication"
PassengerPython "/home/username/virtualenv/webapp/2.7/bin/python2.7"

По умолчанию директивы mod_rewrite не наследуются по умолчанию (в отличие от других модулей). Однако возможно, что наследование mod_rewrite было специально включено в конфигурации вашего сервера, поэтому это может не сработать.

Если это не сработает, вам нужно создать исключение в верхней части корневого файла .htaccess, что предотвратит переопределение запросов на /subfolder/. Например:

RewriteRule ^subfolder - [L]

Это останавливает любую дальнейшую обработку в корневом файле .htaccess, когда URL начинается с /subfolder.

...