Я хочу перенаправить ex.com на www.ex.com, но все же хочу, чтобы www.ex.com/ указывал на мой app.wsgi без его отображения в URL-адресе.
Когда я использую приведенную ниже conf и перехожу на 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?
мой файл conf
<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>
Я считаю, что у вас перевернуты ServerName и ServerAlias. Вам не нужно RewriteRule.
Как правило, при использовании WSGIScriptAlias ваш файл сценария WSGI не должен находиться в DocumentRoot для сайта.
В любом случае попробуйте:
RewriteRule ^(.*)$ http://www.%{HTTP_HOST}$1 [R=301,L]
Это вы добавляете косую черту в правило перезаписи.