我遇到一个问题,如果用户输入:
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.
规则来删除.html
if 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;
}