apache - 如何 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 文件中缺少什么?
解决方案
显然规则有效,但 SiteGround 的 NGinx 缓存导致站点最终无法对更改的规则做出反应。