Как использовать mod_rewrite с WSGI? - PullRequest
0 голосов
/ 02 января 2019

Моя конфигурация Apache содержит эти строки.

WSGIScriptAlias /DEV        /var/www/wsgi/dham.wsgi

RewriteEngine   on
RewriteRule     /jw1        /index.html
RewriteRule     /jw2        /DEV/jobwatch/

Что я не понимаю, так это:

  • curl localhost / DEV / jobwatch / -> works
  • curl localhost / host / jw1 -> works
  • curl localhost / jw2 -> 404 Not Found

Почему это так?Я не думаю, что это имеет отношение к AllowOverride, потому что это (согласно документации Apache) относится только к файлам .htaccess.

РЕДАКТИРОВАТЬ:

После включения перезаписиПри трассировке я нахожу следующие записи в error_log:

rewrite '/jw1' -> '/DEV/jobwatch'
local path result: /DEV/jobwatch
prefixed with document_root to /var/www/html/DEV/jobwatch
go-ahead with /var/www/html/DEV/jobwatch [OK]

Это не имеет смысла, потому что mod_rewrite docs mod_rewrite docs говорят, в частности:

Обратите внимание, что mod_rewrite пытается угадать, указали ли вы путь к файловой системе или URL-путь, проверив, существует ли первый сегмент пути в корне файловой системы.Например, если вы укажете строку подстановки /www/file.html, она будет считаться URL-путем, если в корне не существует каталог с именем www или ваша файловая система

Этого не должно произойти, потому что у меня явно нет ничего под названием / DEV в моей файловой системе, не говоря уже о иерархии / var / www.

ОК, после добавления [PT] к перезаписи это исчезаетправить.Он работает нормально, но каждая ссылка на отображаемой странице теперь содержит бит "/ DEV", что логично, поскольку приложение WSGI (правильно) считает, что оно находится в / DEV.Пока я не знаю, как от этого избавиться, но это второстепенная проблема.

...