所以我一直在使用NGINX Maps來處理重定向,它們運行良好。但是最近我發現了一個問題,我無法弄清楚我的生活正在發生什麼。Nginx MAP重定向問題
我有三個地圖部分通過默認設置相互饋送。
map $host$uri $path_redirects {
~*^example.com\/(sample-url-path-)(a|b|c|d)+(\d+|\%.*)$ /$1$2;
}
map $host$uri $page_redirects {
default $path_redirects;
}
map $host$uri$args $redirect_uri {
default $page_redirects;
~*^example.com\/(.*).html(\?PageSpeed.*)$ /$1.html;
}
然後我實際上基於$ redirect_uri重定向。有點令人困惑,但它可以幫助我保持我的重定向組織。
它一直工作正常,但現在我有一個問題,我懷疑是不是有關的地圖,但我無法弄清楚什麼。
代入regex101.com我可以得到這些規則匹配:
(https://regex101.com/r/kgFE7k/1)
(https://regex101.com/r/JLlcZi/2)
但是,當我在我的映射有他們,他們根本就不重定向。我得到一個404
(重定向)example.com/sample-url-path-c2
(不重定向)example.com/sample-url-path-c%23.WYzyrdPyvVo
(不重定向)example.com/sample-url-page.html?PageSpeed=noscript
任何人都可以看到我做錯了什麼?
因此我找到了問題的一部分。 NGINX $參數不包含'?'。所以我不得不修改我最後的地圖部分:map $ host $ uri?$ args $ redirect_uri {} –
我也修復了另一個問題。 –