使用 mod_rewrite 配置 mod_wsgi WSGIScriptAlias

使用 mod_rewrite 配置 mod_wsgi WSGIScriptAlias

我想将 ex.com 重定向到 www.ex.com 但我仍然希望 www.ex.com/ 指向我的 app.wsgi 而不让它显示在 url 中。

当我使用下面的配置并访问 ex.com 时,出现 404 错误,提示找不到 www.ex.com/app.wsgi/

如果我将 WSGIScriptAlias / /var/www/vhosts/ex/app.wsgi 更改为
WSGIScriptAlias /app.wsgi /var/www/vhosts/ex/app.wsgi

然后我的所有 url 看起来像 www.ex.com/app.wsgi/blabla/...

是否可以使用某种规则将 ex.com 重定向到 www.ex.com 并仍保留 / 作为 app.wsgi 根目录?

我的配置文件

<VirtualHost *:80>
ServerName www.ex.com
ServerAlias ex.com *.ex.com

RewriteEngine On
RewriteCond %{HTTP_HOST} !^www\.
RewriteRule ^(.*)$ http://www.%{HTTP_HOST}/$1 [R=301,L]

WSGIDaemonProcess ex user=www-data group=www-data processes=1 threads=5
WSGIScriptAlias / /var/www/vhosts/ex/app.wsgi


<Directory /var/www/vhosts/ex>
    WSGIProcessGroup ex
    WSGIApplicationGroup %{GLOBAL}
    Order deny,allow
    Allow from all
</Directory>    
</VirtualHost>

答案1

一般来说,如果使用 WSGIScriptAlias,您的 WSGI 脚本文件不应该位于站点的 DocumentRoot 下。

无论如何尝试:

RewriteRule ^(.*)$ http://www.%{HTTP_HOST}$1 [R=301,L]

您是在重写规则中添加斜线的人。

答案2

我相信您把 ServerName 和 ServerAlias 颠倒了。您不需要 RewriteRule。

相关内容