2017-10-18 8 views
0

私は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> 

これは機能します。しかし、私がmyapp.com/test.htmlにサーフすると、私はwww.myapp.com/myapp.wsgi/test.htmlにリダイレクトされます - これは間違っています!私は上記のファイルのいくつかのパラメータを修正しようとしましたが、現在は望みの結果がありません。

これを解決する方法についてのヒントを教えてください。

敬具、 B.

+0

が '' Directory''ディレクティブの内側に書き換えルールを入れないでください'' VirtualHost''のトップレベルにあります。 –

+0

既に試してみましたが、Apacheが起動しなくなってしまいました... – Braek

+0

これを行うと設定が表示され、Apacheまたはシステムログには何が表示されます。 '' Directory''ディレクティブの外側では、 '' RewriteBase''を最初に使うべきではありません。 –

答えて

0

私は次のような構成での作業の事を得るために管理:それらを置く、

<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> 
関連する問題