我正在尝试设置Nginx重定向,将重写从几个较旧的论坛设置到新论坛的任何网址。较旧的论坛从子文件夹运行,而当前论坛从同一站点的子域运行。
因此,例如,我希望将 ANY 请求重定向到site.site.com的首页。由于我正在处理3个旧论坛,我尝试设置这样的嵌套重定向:
location ~ ^/\~([^/]+)/(.*)$ {
location ~ ^/\~ask/(.*)$ {
rewrite ^(.*)$ http://forum.site.com$1 permanent;
}
location ~ ^/\~forum/(.*)$ {
rewrite ^(.*)$ http://forum.site.com$1 permanent;
}
location ~ ^/\~qa/(.*)$ {
rewrite ^(.*)$ http://forum.site.com$1 permanent;
}
}
根据上述规则,只有第一个有效,部分有效。例如,对site.com/ask的请求被重定向到forum.site.com,这很好,但是对site.com/ask/what-is-this的任何请求都转到forum.site.com/ 404。
对site.com/forum和site.com/qa的请求根本不起作用。
我确信有一种更简单的方法可以做到这一点,但我不想花几天时间试图解决这个问题。
欢迎您的意见和赞赏。
编辑:
没有上述代码的任何地方,我把它简化为:
location ~ ^/\~([^/]+)/(.*)$ {
location ~ ^/\~(qa|forum|ask)/(.*)$ {
rewrite ^/~(qa|forum|ask)/(.*)$ http://forum.site.com$1 permanent;
}
}
但结果仍然相同。有什么想法吗?
答案 0 :(得分:0)
实际上,无论用户访问哪个页面,您都希望将用户重定向到论坛的主页面。试试这个。
location /qa/ {
return 301 http://forum.site.com;
}
location /ask/ {
return 301 http://forum.site.com;
}
location /forum/ {
return 301 http://forum.site.com;
}