regex - 重写规则重定向子文件夹
问题描述
我被困在如何编写动态重写规则,或者是否有可能。文件将不存在的原始路径,但将作为物理文件存在于新路径中。请求中的第一个、第二个和第三个目录将是静态的,除了可以是任何整数的第二个目录。第三个目录可以是 2 个选项之一,但不影响最终路径。
/test/1/name/folder/test.js
/anotherpath/1/folder/test.js
/test/44/name/test.js
/anotherpath/44/test.js
/test/55/name/folderagain/txt.txt
/anotherpath/55/folderagain/txt.txt
解决方案
您的问题在您正在寻找的实际内容中含糊不清。特别是因为您没有发布任何自己的尝试来证明您想要实现的实际内容。
所以我不得不猜测一下,但我认为这或多或少是你正在寻找的:
RewriteEngine on
RewriteRule ^/?test/(\d+)/[^/]+/(.+)$ /anotherpath/$1/$2 [END]
如果启用了这些,该规则同样适用于 http 服务器的主机配置或动态配置文件(.htaccess 样式文件)。
如果您使用该规则收到 http 状态 500(“内部服务器错误”),则可能是您操作的是非常旧版本的 apache http 服务器。在这种情况下,请尝试用[END]
旧[L]
标志替换该标志,在这种情况下它应该可以正常工作。在这种情况下,您将在 http 服务器错误日志文件中找到相应的注释。
和一个一般性评论:您应该始终更喜欢将此类规则放在 http 服务器主机配置中,而不是使用动态配置文件(“.htaccess”)。这些动态配置文件增加了复杂性,通常是意外行为的原因,难以调试,而且它们确实减慢了 http 服务器的速度。它们仅在您无法访问真正的 http 服务器主机配置(阅读:非常便宜的服务提供商)或坚持编写自己的规则的应用程序(这是一个明显的安全噩梦)的情况下作为最后一个选项提供。
推荐阅读
- matrix - 在 scipy 中解决稀疏 Ax=b
- java - java中“您的后端和前端之间的数据共享必须通过REST API以JSON格式”是什么意思
- ios - 运行时致命错误
- vba - '编译错误:未定义用户定义类型'
- python-3.6 - 当 func1 和 func2 很可能是同一个 Python 时,在 func2 中出现错误
- mysql - 来自同一个表的子查询
- python-3.x - 扭曲升级 - 现在无法访问站点路径
- node.js - Node.js 回调不是函数
- google-sheets - 如果第一个 AVERAGEIFS 公式不起作用(Google 表格),如何让第二个 AVERAGEIFS 公式接管?(使用 IFERROR 或 SUMPRODUCT??)
- ios - 在 xCode 9.4 和 iOS 11 中每次调用 ViewDidLoad() 方法