首页 > 解决方案 > 将 URI 重写为根目录,除非请求是包含 index.html 的有效文件夹

问题描述

我有一个带有 javascript 的单页网站,其中包含多个指向 javascript 应用程序内页面的虚拟路径。我还有多个文件夹,其中包含其他 javascript 应用程序或简单的 HTML 网站。

我是 .htaccess 文件的新手,并从我能找到的各种答案中收集了一些规则。但是,我遇到了一个我无法解释的问题。

.ht 访问:

# 启用重写
重写引擎开启

# 如果不是 HTTPS
RewriteCond %{HTTPS} 关闭

# 使用 https:// 重定向到相同的 URL,如果此规则有效,则忽略所有进一步的规则
重写规则 ^(.*) https://%{HTTP_HOST}/$1 [R,L]

# 如果我们到达这里,这意味着我们在 https://

# 如果浏览器中指定名称的文件不存在
RewriteCond %{REQUEST_FILENAME} !-f

# 并且浏览器中指定名称的目录不存在
RewriteCond %{REQUEST_FILENAME} !-d

# 我们还没有打开根目录(否则我们会得到一个重定向循环)
RewriteCond %{REQUEST_FILENAME} !\/$

# 将所有请求重写到根
重写规则 ^(.*) /

示例结构:

website.com
- index.html (React app 1, with pages)
- foobar/
  - index.html (React app 2)

更奇怪的是,website.com/foobar页面上的硬刷新(没有缓存)确实会导致应用程序 2。这在我迄今为止拥有的每台设备上都复制了。

如果有人知道如何处理这个问题,将不胜感激!

我正在处理的真实实时页面是这样的:https ://robbertkooiman.com/split

该页面应与此相同:https ://robbertkooiman.com/split/

标签: .htaccess

解决方案


推荐阅读