我从旧的 Joomla 安装中获得了 RSS 源example.com/?format=feed&type=rss
。该网站现在使用 Jekyll 构建,并使用新的 URLexample.com/rss.xml
作为 RSS 源。
由于 URL 以“?”开头,重写规则对我不起作用。我使用 if 指令让它工作,但是想要避免使用 if。
这是我想用重写或重定向替换的有效 if 指令:
if ($args ~ "type=rss") {
rewrite ^ https://example.com/rss.xml? permanent;
}
以“?”开头的 URL 的 if 指令可以用重写或重定向替换吗?
答案1
alexyten 是对的。在这种情况下,没有其他方法可以处理此问题,因为您尝试匹配的内容实际上不是位置的一部分,而是一个 GET 参数。而且,正如 alexeyten 所建议的,我会使用if ($arg_argname = "exact string")
。正则表达式既有性能开销,又如果编写不正确,则会导致无法解释的重定向和重写。
例如,如果您想匹配参数format
具有值的事实feed
,您需要执行以下操作:if ($arg_format = "feed")
。