在Apache配置中一起使用mod_rewrite和mod_proxy

时间:2019-05-27 04:35:24

标签: angular apache mod-rewrite mod-proxy

我正在使用Apache服务器托管Angular应用程序。因此,我通过他的以下配置启用了单页应用程序支持

<Location / >
   RewriteEngine on#
   RewriteCond %{REQUEST_FILENAME} !-d
   RewriteCond %{REQUEST_FILENAME} !-f
   RewriteRule . /index.html [L]
</Location>

我也有一个后端。我正在使用mod_proxy将其代理到Apache。

ProxyPass "/api" "http://127.0.0.1:8081/api"
ProxyPassReverse "/api" "http://127.0.0.1:8081/api"

但是当我同时使用这两种配置时,我无法调用任何API。 所有调用均返回index.html。

我可以知道哪里出了问题以及如何解决吗?

1 个答案:

答案 0 :(得分:0)

感谢@Dusan Bajic的评论。
现在,我有了以下配置,它可以正常工作。

ProxyPass "/api" "http://127.0.0.1:8081/api"
ProxyPassReverse "/api" "http://127.0.0.1:8081/api"

<Location / >
    RewriteEngine on
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_URI} !^/api
    RewriteCond %{REQUEST_URI} !\.(?:css|js|map|jpe?g|gif|png)$ [NC]
    RewriteRule . /index.html [L]
</Location>