Nginx

Nginx 可以重定向或重寫以“?”開頭的 URL不使用“if”指令?

  • April 20, 2014

example.com/?format=feed&type=rss我有一個來自舊 Joomla 安裝的 RSS 提要。該站點現在使用 Jekyll 建構,並example.com/rss.xml為 RSS 提要使用新的 URL。

重寫規則對我不起作用,因為 URL 以“?”開頭。我已經使用 if 指令,但想避免使用 if

這是我想用重寫或重定向替換的有效 if 指令:

if ($args ~ "type=rss") {
rewrite ^ https://example.com/rss.xml? permanent;
}

以“?”開頭的 URL 的 if 指令可以嗎?替換為重寫或重定向?

alexyten 是對的。在這種情況下,沒有其他方法可以處理此問題,因為您嘗試匹配的內容實際上不是該位置的一部分,而是一個 GET 參數。而且,正如 alexeyten 建議的那樣,我會使用if ($arg_argname = "exact string"). 正則表達式既有性能成本,也有如果它們沒有正確編寫,它們可能會導致無法解釋的重定向和重寫。

例如,如果您想匹配format參數具有 value的事實,則feed需要執行以下操作:if ($arg_format = "feed").

引用自:https://serverfault.com/questions/590055