我想配置我的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来处理客户端)路径。)
我使用带有此标志的节点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
。
答案 0 :(得分:2)
知道了!
RewriteRule ^((?!\/[api|lib]).)*$ /var/www/html/myapp/myappweb/public/index.html
我需要排除api
目录和lib
目录(托管我的js / css文件)。