这里有一个类似的问题,但答案不起作用,XenForo 的官方答案也不起作用。显然,他们在论坛从 /forums 设置迁移到根域级别时遇到了问题,但修复方法不起作用。
旧链接 https://www.twcenter.net/forums/member.php?10263-Gaius-Baltar
新链接 https://twcenter.net/members/gaius-baltar.10263/
旧链接 https://www.twcenter.net/forums/showthread.php?581961-Name-Change-Requests
新链接 https://twcenter.net/threads/name-change-requests.581961/
这确实对非友好 URL 有效,但我没有很多这样的 URL。
return 301 /threads/$arg_t/;
}
location = /member.php {
return 301 /members/$arg_u/;
}
我认为让我困惑的是文本和 ID 之间的切换。在 vBulletin 中,它先 id,再文本
在 XenForo 中它的 the-text.id
当然,根据你提供的请求示例
$arg_u
, 或$arg_t
变量是空的。这些变量保存的是相应查询参数的值——例如:在请求中
该
$arg_t
变量将等于2175433
。在请求中
该
$arg_u
变量将等于10263-Gaius-Baltar
。相反,您需要使用
$args
包含完整查询字符串的变量。Nginx 内置的字符串操作功能非常有限,但以下方法应该适合您:Nginx 不提供内置的大小写转换功能。但是,根据对您的 URL 示例进行的快速测试,此设置应该可以正常工作,尽管它会导致额外的 301 重定向:
到:
请注意,该
map
指令必须在上下文中声明http
,与指令处于同一级别server
,而不是在服务器块内。