Моя конфигурация 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.Пока я не знаю, как от этого избавиться, но это второстепенная проблема.