我使用匹配表达式作为 https://([^/]*)/(.*)
并将表达式替换为 constantprefix/$2 并尝试重写通过向所有 URL 添加“/constantprefix”来传入 URL
对于以下网址,它按预期工作:
- https://hostname/incomingURI正在转换为 /constantprefix/incomingURI
- https://hostname/正在转换为/constantprefix/
- https://hostname/login/index.aspx正在转换为 /constantprefix/login/index.aspx
我对已经以/constantprefix 开头的 URL 遇到问题,我在输出 URL 中看到两个/constantprefix/constantprefix ,但我没有在寻找,有什么方法可以避免这种情况吗?
如果传入 URL 是 https://hostname/constantprefix/login/index.aspx那么输出URL就变成https://hostname/constantprefix/constantprefix/login/index.aspx 我可以知道如何避免匹配表达式中的/constantprefix/constantprefix 吗?
最佳答案
你可以这样做:
https://[^/]*/(?!constantprefix(?:/|$))(.*)
使用替换字符串:
constantprefix/$1
(?!...)
是一个否定的前瞻,意味着后面没有。这只是一个测试,不消耗字符(模式中的这种元素也称为“零宽度断言”,作为后行或 anchor ^
和 $
).
你的模式中的第一个捕获组没有用,我删除了它。
关于regex - 使用 PCRE 表达式进行 URL 重写 - 将前缀附加到除一种模式之外的所有传入 URI,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40006442/