nginx的子目录301重定向怎么写

发布于 2022-09-05 00:45:25 字数 1204 浏览 28 评论 0

最近遇到这么一个问题,关于网站的。
PC 地址页面类似 www.abc.com/pc/123/index.html
对应的M端地址是 m.abc.com/sj/123/index.html
123这个目录不是固定的有其他的名字,pc和sj都是固定的,因此还存在其他这样的对应关系比如:
PC www.abc.com/pc/222/index.html
M m.abc.com/sj/222/index.html

这里需要在nginx做判断并跳转,我原来的写法是:

location /pc/ {
    if ($http_user_agent ~* "((Android)|(blackberry)|(googlebot-mobile)|(iemobile)|(ipad)|(iphone)|(opera mobile)|(palmos)|(webos)|(UCBrowser)|(wap)|(Opera Mobi))"){
                    return 301 http://m.abc.com/sj$request_uri;
}

很显然上面的写法会变成这样的跳转对应:
PC www.abc.com/pc/222/index.html
M m.abc.com/sj/pc/222/index.html
这不是我想要的。 $request_uri如何去掉那个pc目录?
求大神。如何改写?

现在我改成这样可是语法检测又通不过:
`
location ~/pc/ (.*) {

if ($http_user_agent~ * "((Android)|(blackberry)|(googlebot-mobile)|(iemobile)|(ipad)|(iphone)|(opera mobile)|(palmos)|(webos)|(UCBrowser)|(wap)|(Opera Mobi))") 
    {

if ($uri~ * "/([a-zA-Z0-9+])/([a-zA-Z0-9+]/)") {

        return 301 http: //m.abc.com/sj/$2/;
    }
}

}
`
上面提示
提示这行
if ($uri~ * "/([a-zA-Z0-9+])/([a-zA-Z0-9+]/)")
[emerg] "if" directive is not allowed here in

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

胡渣熟男 2022-09-12 00:45:26

答案在此:

 location ~* /pc/(.*?)/ {
    set $name $1;
    if ($http_user_agent ~* "((Android)|(blackberry)|(googlebot-mobile)|(iemobile)|(ipad)|(iphone)|(opera mobile)|(palmos)|(webos)|(UCBrowser)|(wap)|(Opera Mobi))") {
            return 301 http://m.abc.com/sj/$name/;
    }
}
烟酉 2022-09-12 00:45:26
location ~ /pc/(.*) {
    if ($http_user_agent ~* "((Android)|(blackberry)|(googlebot-mobile)|(iemobile)|(ipad)|(iphone)|(opera mobile)|(palmos)|(webos)|(UCBrowser)|(wap)|(Opera Mobi))"){
                    return 301 http://m.abc.com/sj/$1;
}
不知道这样行不行
天赋异禀 2022-09-12 00:45:26
location ~ ^/pc/(.*) {
    if ($http_user_agent ~* "((Android)|(blackberry)|(googlebot-mobile)|(iemobile)|(ipad)|(iphone)|(opera mobile)|(palmos)|(webos)|(UCBrowser)|(wap)|(Opera Mobi))") {
        return 301 http://m.abc.com/sj/$1;
    }
}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文