.htaccess - 将 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
导致应用程序 1website.com/index.html
导致应用程序 1website.com/page
导致应用程序 1 中的页面website.com/foobar/index.html
导致应用程序 2website.com/foobar/
导致应用程序 2website.com/foobar
错误地导致应用程序 1
更奇怪的是,website.com/foobar
页面上的硬刷新(没有缓存)确实会导致应用程序 2。这在我迄今为止拥有的每台设备上都复制了。
如果有人知道如何处理这个问题,将不胜感激!
我正在处理的真实实时页面是这样的:https ://robbertkooiman.com/split
该页面应与此相同:https ://robbertkooiman.com/split/
解决方案
推荐阅读
- php - 如何解决 mysqli_fetch_assoc 错误?
- android - 请告诉我如何在我的 Android 设备上使用 Unity 导入我放入内部存储的视频文件
- batch-file - 如何从 Windows 批处理文件 ssh 跳转到多个主机
- arrays - 从 byte[] 下载 PDF
- java - 带有 JNA 的 USBFS IOCTL 调用在 64 位架构中不起作用
- javascript - 如何使用 java-script 中的 window.print 方法更改页眉和页脚样式?
- wordpress - 如何在 Gutenberg 的 Inspector 控件中添加多条件控制字段?
- java - 使用 java 读取联系人的扩展
- c++ - 如何在文件系统之上添加层?就像 OneDrive 或 Google Drive 中的缓存一样
- css - 并非所有浏览器都支持 CSS 文件