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")
.