我的Apache配置包含这些行。
WSGIScriptAlias /DEV /var/www/wsgi/dham.wsgi
RewriteEngine on
RewriteRule /jw1 /index.html
RewriteRule /jw2 /DEV/jobwatch/
我不明白的是:
那是为什么?我认为这与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文档专门说:
请注意,mod_rewrite会尝试猜测您是否已指定 文件系统路径或URL路径,方法是检查第一个段是否 路径的路径位于文件系统的根目录。例如,如果您 指定/www/file.html的替换字符串,则将是 除非在根目录下存在名为www的目录,否则将被视为URL路径 或您的文件系统
这不应该发生,因为我显然在文件系统中的任何地方都没有叫/ DEV的东西,更不用说在/ var / www层次中了。
好的,将[PT]添加到重写规则中后,该错误消失。它可以正常工作,但是现在呈现的页面中的每个链接都包含“ / DEV”位,这是合乎逻辑的,因为WSGI应用程序(正确)认为它位于/ DEV下。到目前为止,我还不知道如何摆脱它,但这是次要问题。