重写到子目录,然后重写到 React 的索引.html使用 root .htaccess



我正在尝试创建位于根Web服务器目录中的.htaccess文件。在根目录中,还会有名为backend/和frontend/+的目录(它们的名称是可变的(。

当前树可能如下所示:

/
.htaccess
frontend/
static/
index.html
manifest.json
backend/
files/
index.php
other/

由于前端(React(和后端(PHP(由其他人完成,并且使用CI进行部署,因此我无法控制这两个目录中的文件和文件夹。

我试图用.htaccess文件完成的是:

  1. 重写(而不是重定向(所有进入/**但自身不存在的内容到/frontend/**
  2. /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>

其主要未能将CCD_ 17重写为CCD_
我应该如何继续?

这样做:

RewriteEngine on
RewriteBase /
# skip backend/ and other/ directories
RewriteRule ^(?:backend|other)/ - [L,NC]
# forward these known paths to /frontend/
RewriteRule ^(index.html)$ /frontend/$1 [L,NC]
# rewrite an alphanumeric URI that is non-file/dir to /frontend/index.html
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^w+/?$ /frontend/index.html [L]
# Rewrite non-existent files and folders to frontend
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} !^/frontend/ [NC]
RewriteRule ^(.*)$ /frontend/$1 [L]

相关内容

  • 没有找到相关文章

最新更新