![使用 mod_rewrite 配置 mod_wsgi WSGIScriptAlias](https://linux22.com/image/619584/%E4%BD%BF%E7%94%A8%20mod_rewrite%20%E9%85%8D%E7%BD%AE%20mod_wsgi%20WSGIScriptAlias.png)
我想将 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。