【发布时间】:2021-08-05 01:06:08
【问题描述】:
我正在尝试创建位于根网络服务器目录中的 .htaccess 文件。在根目录下,还会有多个名为 backend/ 和 frontend/ 的目录(它们的名称是可变的)。
当前树可能如下所示:
/
.htaccess
frontend/
static/
index.html
manifest.json
backend/
files/
index.php
other/
由于前端 (React) 和后端 (PHP) 由其他人完成并使用 CI 部署,因此我无法控制这两个目录中的文件和文件夹。
我试图用 .htaccess 文件完成的是:
- 重写(不重定向)到
/**并且本身不存在的所有内容到/frontend/** -
/frontend/**中不存在的所有内容都应返回/frontend/index.html
这里有一些例子:
-
/变为/frontend/(#1) -
/index.html变为/frontend/index.html(#1) -
/manifest.json变为/frontend/manifest.json(#1) -
/static/script.js变为/frontend/static/script.js(#1) -
/module变为/frontend/index.html(#1 和 #2) -
/backend/**不会因为目录存在而被重写 -
/other/**不会因为目录存在而被重写
我当前的文件如下所示:
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteBase /
# Rewrite root directory to frontend
RewriteCond %{REQUEST_URI} ^/$
RewriteRule ^(.*)$ /frontend/index.html [NC,L,QSA]
# Rewrite non-existent files and folders to frontend
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} !^/frontend/
RewriteRule ^(.*)$ /frontend/$1 [NC,L,QSA]
</IfModule>
主要是无法将/module重写为/frontend/index.html。
我应该如何继续?
【问题讨论】:
-
添加重定向到 /frontend/index.html 的 ErrorDocument 404 怎么样?