如何让mod_rewrite与mod_wsgi一起玩得很好?

时间:2013-08-06 17:05:02

标签: django apache mod-rewrite mod-wsgi

看起来mod_rewrite搞乱了mod_wsgi的env变量(scumbag吃了SCRIPT_NAME或其他东西)。

只添加这一行:

RewriteEngine On

到我的httpd.conf导致我的基于Django的网站出现问题。我的别名如下:

WSGIScriptAlias /prefix /path/to/my/wsgi.py

现在两个网址:

example.com/prefix

example.com/prefix/

工作(有点......网站显示),但在前一种情况下(没有斜杠),所有网址都是由django错误生成的,例如:

example.com/some_url而不是

example.com/prefix/some_url

如果我评论#RewriteEngine On,问题就消失了,但我需要mod_rewrite。我该如何解决这个问题?

提前致谢。

1 个答案:

答案 0 :(得分:5)

可能是[PT]标志问题吗?为了将重定向的URI传递给WSGIScriptAlias,您需要在重写规则的末尾添加PassThrough(PT)标志,例如:

RewriteEngine On
RewriteRule    ^/external_url$   /internal_wsgi_url    [PT]

请参阅my answer on Pro Webmasters