2

我想将我的 Apache Web 服务器配置为同时为单页应用程序和 WSGI 进程提供服务。/api我可以使用此配置成功地为 WSGI 应用程序提供服务:

WSGIDaemonProcess myapp threads=5 user=apache
WSGIScriptAlias /api /var/www/html/myapp/setup/myapp.wsgi

因此,如果用户点击/api/things我的 WSGI 应用程序(flask)中的 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开头的路线:/thingsindex.html

AliasMatch "^/things(/.*)?$" /var/www/html/myapp/myappweb/public/index.html

但我真正想要的是一个AliasMatch正则表达式,它强制所有路由(除了以 , 开头的任何内容/api/)来显示index.html

4

1 回答 1

2

知道了!

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

我需要排除api目录和lib目录(我的 js/css 文件所在的位置)。

于 2015-12-23T22:58:03.513 回答