我一直在升級/更新的伺服器有使用 php 和 python 的頁面。我使用 Flask 框架重寫了基於 python 的頁面,並使用 wsgi 配置了 apache:
<VirtualHost *:443> ServerName my_fake_site ... AliasMatch ^\/((?:flask_dir1|flask_dir2).*)\.((css|php|png)$((?:\?.*)?)) /var/www/html/app/. AliasMatch ^\/(.*)\.(css|html|php|png) /var/www/html/. WSGIDaemonProcess main_proc processes=8 python-home=/var/www/html/venv WSGIScriptAlias / /var/www/html/wsgi.py <Directory /var/www/html/> WSGIProcessGroup main_proc WSGIApplicationGroup %{GLOBAL} Require all granted </Directory> SSLEngine on ... </VirtualHost> WSGIPythonPath /var/www/html WSGIPythonHome /var/www/html/venv
在舊伺服器上,指向目錄的 url 預設為 index.php
使用 DirectoryIndex
選項(在另一個conf檔案中設定)。在新伺服器上,我在錯誤日誌中收到“內部伺服器錯誤”訊息和 500 回應代碼。
所以最終的問題是,如何設定 apache 來同時服務由 php 處理的頁面和 python 處理的頁面? (註:flask目錄下有幾個php處理的頁)
編輯:我新增了另一個 AliasMatch
行,似乎可以執行我想要的操作。我還能夠從第二個 AliasMatch
行中刪除“php”:
AliasMatch ^\/((?:flask_dir1|flask_dir2).*)\.((css|php|png)$((?:\?.*)?)) /var/www/html/app/. AliasMatch ^\/(.*)\.(css|html|png) /var/www/html/. AliasMatch ^\/((?:php_dir1|php_dir2).*) /var/www/html/
As mentioned in my edit, the
AliasMatch
directive worked. From the documentation, this allows Apache to host static files, which I guess also includes php files.