Назад | Перейти на главную страницу

Настройте mod_wsgi WSGIScriptAlias ​​с помощью mod_rewrite

Я хочу перенаправить 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]

Это вы добавляете косую черту в правило перезаписи.