2016-07-26 56 views
0

注意:這個問題與'Add a prefix to all Flask routes'不同,因爲我試圖在apache級別解決這個問題。另外,對於燒瓶路線的建議修復無效!設置wsgi作爲apache中的別名路徑時的問題

this post之後,我試圖設置apache默認提供PHP文件,但是將給定的別名(即/flaskapp)指向wsgi路徑。 wsgi文件依次將請求路由到python flask應用程序。

下面是我想(下000-default.conf)Apache的配置:

<VirtualHost *:80> 
     ServerName localhost 
     ServerAdmin [email protected] 

     Alias//var/www/html/ 
     <Directory "/var/www/html"> 
      Order Deny,Allow 
      Allow from all 
      Require all granted 
     </Directory> 

     WSGIScriptAlias /flaskapp "/var/www/flaskapp/deploy.wsgi" 
     <Directory /var/www/flaskapp> 
       Options +ExecCGI 
       Order allow,deny 
       Allow from all 
     </Directory> 
</VirtualHost> 

service apache2 restart後,我發現,在404錯誤請求http://myip/flaskapp結果。其他一切正常。

事情我試過到目前爲止:

  • 雙重檢查所有文件和文件夾路徑
  • (未發現問題)使用上面的代碼WSGI部分成立WSGI應用程序作爲獨立的虛擬主機(正常工作)
  • 添加app.config['APPLICATION_ROOT'] = '/flaskapp'我app.py文件,作爲建議的問題「Add a prefix to all Flask routes」(沒有任何效果)

我在哪裏可以出錯了?

+1

請勿使用別名/。這完全覆蓋了mod_wsgi。使用DocumentRoot指令來指定主站點文件的位置。這樣mod_wsgi可以覆蓋子URL。 –

+0

是的,你是正確的,而不是重複聲稱相同的問題。這裏的人們通常不瞭解微妙之處,只是做出假設。 –

+0

謝謝@GrahamDumpleton - 添加DocumentRoot解決了這個問題。隨意寫這個答案,或者我今晚可以這樣做...... – user2761030

回答

1

相反的:

Alias//var/www/html/ 
    <Directory "/var/www/html"> 
     Order Deny,Allow 
     Allow from all 
     Require all granted 
    </Directory> 

使用:

DocumentRoot /var/www/html/ 
    <Directory "/var/www/html"> 
     Order Deny,Allow 
     Allow from all 
     Require all granted 
    </Directory> 

使用 '/' 與Alias優先於一切,包括的mod_wsgi的攔截在子URL請求的能力。因此,對於網站根目錄中的內容,您需要使用DocumentRoot指令。