Apache 使用 AliasMatch 与 WSGI 进程一起提供单页应用程序
Apache serve single page application alongside WSGI process with AliasMatch
我想将我的 Apache Web 服务器配置为同时为单页应用程序和 WSGI 进程提供服务。我可以使用此配置在 /api
成功提供 WSGI 应用程序:
WSGIDaemonProcess myapp threads=5 user=apache
WSGIScriptAlias /api /var/www/html/myapp/setup/myapp.wsgi
因此,如果用户点击 /api/things
,来自我的 WSGI 应用程序(烧瓶)的 JSON 数据将被发送。
我的主页 index.html
文件(当用户点击 /
时提供)在包含以下内容时有效:
DocumentRoot /var/www/html/myapp/myappweb/public
但是,当用户访问任何不以 /api
开头的路由时,我希望我的 Apache Web 服务器能够提供服务 index.html
。例如,如果用户点击 /things
或 /things/42
我希望 Apache 将它们发送到 index.html
而不是抛出 404。(我正在使用 redux-router 来处理客户端路径。)
我使用带有此标志的 node live-server 包在我的开发环境中工作:
live-server --entry-file=index.html
此外,我可以使用 AliasMatch
强制所有以 /things
开头的路由显示 index.html
:
AliasMatch "^/things(/.*)?$" /var/www/html/myapp/myappweb/public/index.html
但我真正想要的是一个 AliasMatch
正则表达式,它强制所有路由(以 /api/
开头的路由除外)显示 index.html
.
知道了!
RewriteRule ^((?!\/[api|lib]).)*$ /var/www/html/myapp/myappweb/public/index.html
我需要排除 api
目录和 lib
目录(托管我的 js/css 文件)。
我想将我的 Apache Web 服务器配置为同时为单页应用程序和 WSGI 进程提供服务。我可以使用此配置在 /api
成功提供 WSGI 应用程序:
WSGIDaemonProcess myapp threads=5 user=apache
WSGIScriptAlias /api /var/www/html/myapp/setup/myapp.wsgi
因此,如果用户点击 /api/things
,来自我的 WSGI 应用程序(烧瓶)的 JSON 数据将被发送。
我的主页 index.html
文件(当用户点击 /
时提供)在包含以下内容时有效:
DocumentRoot /var/www/html/myapp/myappweb/public
但是,当用户访问任何不以 /api
开头的路由时,我希望我的 Apache Web 服务器能够提供服务 index.html
。例如,如果用户点击 /things
或 /things/42
我希望 Apache 将它们发送到 index.html
而不是抛出 404。(我正在使用 redux-router 来处理客户端路径。)
我使用带有此标志的 node live-server 包在我的开发环境中工作:
live-server --entry-file=index.html
此外,我可以使用 AliasMatch
强制所有以 /things
开头的路由显示 index.html
:
AliasMatch "^/things(/.*)?$" /var/www/html/myapp/myappweb/public/index.html
但我真正想要的是一个 AliasMatch
正则表达式,它强制所有路由(以 /api/
开头的路由除外)显示 index.html
.
知道了!
RewriteRule ^((?!\/[api|lib]).)*$ /var/www/html/myapp/myappweb/public/index.html
我需要排除 api
目录和 lib
目录(托管我的 js/css 文件)。