Apache切换到Nginx后目录301失效的小问题

发布于 2016-01-25 作者 [重庆SEO]

有一个项目前段时间从lamp切换到lnmp后,htaccess的rewrite规则转换为nginx的规则后前台页面显示正常,然后没有更仔细的测试,最近在日志分析的邮件里面发现少量个别目录301重定向失效了。

比如:
location / {
    if (!-e $request_filename) {
        rewrite ^/dir1/(.*)$ /dir2/$1 permanent;
        rewrite ^/dir1/dir2/(.*)$ /dir1/$1 permanent;
        ...
    }
}
死活不能正常运行。
#可以, 非常规后缀名
/dir1/a.b => /dir2/a.b
/dir1/dir2/a.xx => /dir1/a.xx
#不可以
/dir1/a.jpg => /dir2/a.jpg
/dir1/dir2/a.jpg => /dir1/a.jpg
后来我将他们单独提出来后,正常了。
location ~* ^/dir1/ {
    rewrite ^/dir1/(.*)$ /dir2/$1 permanent;
}
location ~* ^/dir1/dir2/ {
    rewrite ^/dir1/dir2/(.*)$ /dir1/$1 permanent;
}
虽然这样问题也解决了,但之前的为什么不可以不得而知,如果你知道,请告知我,或许我之后了解了,也第一时间更新到这里。