使用单个重定向删除 www 和 .html

使用单个重定向删除 www 和 .html

我遇到一个问题,如果用户输入:

www.myurl.com/page.html

他们首先被重定向到

myurl.com/page.html

然后

myurl.com/page

这是因为我的 conf 文件中有以下内容

    #remove www from url
    if ($host ~* ^www\.(.*)) {
        set $remove_www $1; 
        rewrite ^(.*)$ http://$remove_www$1 permanent;
    }

    location  /{

            # removes .html extension
            if ($request_uri ~ \.html($|\?)) {
                    rewrite ^(.+)\.html$ $1 permanent;
            }
    }

我的问题

有没有办法消除第一个重定向,以便如果用户输入,www.mysite.com/page.html他们会被直接重定向到mysite.com/page

答案1

您需要www.规则来删除.htmlif present。您也不需要if第二次重写中的语句:

#remove www from url
if ($host ~* ^www\.(.*)) {
    set $remove_www $1; 
    rewrite ^(.*?)(\.html)?$ http://$remove_www$1 permanent;
}

location / {
    rewrite ^(.+)\.html$ $1 permanent;
}

相关内容