gpt4 book ai didi

regex - 将 url 重定向到 url 到 www

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:15:00 26 4
gpt4 key购买 nike

我在将 url 重定向到 nginx 中的 url 时遇到问题:

例如我有一个链接:

https://example.com/oferty-specjalne/szczegoly-oferty?OfferID=124296

工作函数:

location  ^/oferty-specjalne/szczegoly-oferty(.*)$  {
return 301 https://example.com/oferty-specjalne/; }

不工作的功能:

location ~ ^/oferty-specjalne/szczegoly-oferty\?OfferID=(124170|124296|124299|123483|63788|97002)$  {
return 301 https://example.com/oferty-specjalne/; }

location ~ ^/oferty-specjalne/szczegoly-oferty?OfferID=(.*)$ {
return 301 https://example.com/oferty-specjalne/$1; }

location ^/oferty-specjalne/szczegoly-oferty?OfferID=97002 {
return 301 https://example.com/oferty-specjalne/; }

我检查了测试仪中的正则表达式,一切正常。我正在询问我在哪里犯了错误以及如何解决它的信息,或者例如。

最佳答案

? 之后的 URI 部分是查询字符串(或参数),不是 locationrewrite 使用的规范化 URI 的一部分 指令 - 所以你的规则永远不会匹配。参见 this document了解详情。

如果您有需要匹配整个 URI(包括查询字符串)的复杂正则表达式,您需要使用 $request_uri 变量。这可以使用 ifmap 进行测试。对于多个正则表达式,map 是首选解决方案。

例如:

map $request_uri $redirect {
default 0;
~^/oferty-specjalne/szczegoly-oferty\?OfferID=(124170|124296|124299|123483|63788|97002)$
/oferty-specjalne/;
~^/oferty-specjalne/szczegoly-oferty\?OfferID=(?<offerid>.*)$ /oferty-specjalne/$offerid;
~^/oferty-specjalne/szczegoly-oferty\?OfferID=97002 /oferty-specjalne/;
~^/oferty-specjalne/szczegoly-oferty /oferty-specjalne/;
}

server {
...
if ($redirect) {
return 301 $redirect;
}

正则表达式按顺序求值,直到找到匹配的规则,因此将最具体的规则排在最前面,最不具体的最后。使用命名捕获,因为数字捕获可能超出范围。如果方案或域名相同,则无需指定。map 指令位于 `server block 之外。参见 this document了解详情。

关于regex - 将 url 重定向到 url 到 www,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53758629/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com