Apache:重定向到WSGI脚本是错误的?

Apache:重定向到WSGI脚本是错误的?

问题描述:

我部署了一个Flask应用程序到Apache。这工作,但我已经添加了一些重定向非www流量到www域。Apache:重定向到WSGI脚本是错误的?

<VirtualHost *:80> 
    ServerName myapp.com 
    WSGIDaemonProcess myapp python-home=/home/ubuntu/envs/myapp user=ubuntu group=ubuntu threads=5 
    WSGIScriptAlias//home/ubuntu/apps/myapp/myapp.wsgi 
    Alias /static /home/ubuntu/apps/myapp/myapp/static 
    <Directory /home/ubuntu/apps/myapp> 
     WSGIProcessGroup myapp 
     WSGIApplicationGroup %{GLOBAL} 
     Require all granted 
     AllowOverride All 
     RewriteEngine On 
     RewriteBase/
     RewriteCond %{HTTP_HOST} !^www\. [NC] 
     RewriteRule ^(.*)$ http://www.%{HTTP_HOST}/$1 [R=301,L] 
    </Directory> 
</VirtualHost> 

This Works!但是,当我冲浪到myapp.com/test.html我被重定向到www.myapp.com/myapp.wsgi/test.html - 这是不正确的!我尝试修改上面的文件中的一些参数,但目前没有所需的结果。

有关如何解决这个问题的任何提示?

亲切的问候, B.

+0

不要把''Directory''指令内重写规则,把它们在''VirtualHost''的顶层。 –

+0

已经尝试过,但会导致Apache不再启动... – Braek

+0

显示配置时,以及Apache或系统日志中的错误。当在''Directory''指令之外时,你不应该使用''RewriteBase''作为开始。 –

我设法得到的东西具有以下配置工作:

<VirtualHost *:80> 
    RewriteEngine On 
    RewriteCond %{HTTP_HOST} !^www\. [NC] 
    RewriteRule ^(.*)$ http://www.%{HTTP_HOST}%{REQUEST_URI} [R=301,L] 
    ServerName myapp.com 
    WSGIDaemonProcess myapp python-home=/home/ubuntu/envs/myapp user=ubuntu group=ubuntu threads=5 
    WSGIScriptAlias//home/ubuntu/apps/myapp/myapp.wsgi 
    Alias /static /home/ubuntu/apps/myapp/myapp/static 
    <Directory /home/ubuntu/apps/myapp> 
     WSGIProcessGroup myapp 
     WSGIApplicationGroup %{GLOBAL} 
     Require all granted 
    </Directory> 
</VirtualHost>