首页 > 解决方案 > 如何 mod_rewrite / 到 /frontend/index.html?

问题描述

我正在尝试在单个 Apache 服务器(由 SiteGround.com 托管)上同时托管 PHP API 和静态/构建的 Angular 应用程序。

现在我有这个 .htaccess 文件

RewriteEngine on
RewriteCond %{HTTP_HOST} ^mysite.com$ [NC]
RewriteCond %{REQUEST_URI} !frontend/
RewriteRule ^$ /index.html
RewriteRule ^/$ /index.html
RewriteRule (.*) /frontend/$1 [L]

我认为^$and^/$规则足以使根目录mysite.com透明地服务/frontend/index.html,但是当我浏览到时,我只得到一个没有内容的 200 OK 响应mysite.com;但是mysite.com/index.html确实显示了我的 Angular 应用程序。我也尝试过逃避规则,^\/$但这也不起作用。

我还尝试使根规则具有更高的优先级,但这没有用

RewriteEngine on

RewriteRule ^$ /frontend/index.html [L]
RewriteRule ^\/$ /frontend/index.html [L]

RewriteCond %{HTTP_HOST} ^app.apprevenir.com$ [NC]
RewriteCond %{REQUEST_URI} !frontend/
RewriteRule (.*) /frontend/$1 [L]

我的 .htaccess 文件中缺少什么?

标签: apache

解决方案


显然规则有效,但 SiteGround 的 NGinx 缓存导致站点最终无法对更改的规则做出反应。


推荐阅读