Apache使用AliasMatch与WSGI进程一起提供单页应用程序

时间:2015-12-23 22:20:25

标签: regex apache single-page-application wsgi npm-liveserver

我想配置我的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

1 个答案:

答案 0 :(得分:2)

知道了!

RewriteRule ^((?!\/[api|lib]).)*$ /var/www/html/myapp/myappweb/public/index.html

我需要排除api目录和lib目录(托管我的js / css文件)。