如何修复从 .html 和 index.html 重定向的 ngnix.conf
How to fix ngnix.conf for redirect from .html and index.html
我想从 url 做重定向,这里有真实页面 - mysite。com/folder/index。html :
- 我的网站。com/folder/index。html 到我的网站。com/folder/
- 我的网站。com/folder。html 到我的网站。com/folder/
- mysite.com/index.html 到 mysite.com
这是我配置的一部分
server_name k.my.net www.k.my.net;
index index.html;
root /var/www/demo/k.my.net/current/public;
rewrite ^(.*/)index\.html$ ;
rewrite ^(/.+)\.html$ /;
location / {
try_files $uri $uri/ =404;
}
也尝试使用:
location / {
try_files $uri $uri/ @htmlext;
}
location ~ \.html$ {
try_files $uri =404;
}
location @htmlext {
rewrite ^(.*)$ .html permanent;
}
第三解ERROR_LOOP
location ~* ^/([a-zA-Z1-9_-]*/)index\.html$ {
return 301 ;
}
location ~* ^/([a-zA-Z1-9_-]*/?[1-9a-zA-Z_-]*)\.html$ {
return 301 //;
}
location ~* ^/([a-zA-Z1-9_-]*/?[a-zA-Z1-9_-]*)/$ {
try_files /.html //index.html =404;
}
您可以使用正则表达式 location
提取尾随 /
之前的 URI 部分,并使用 try_files
来测试这两个备选方案。有关详细信息,请参阅 this document。
例如:
location ~ ^(.*)/$ {
try_files /index.html .html =404;
}
location
也匹配/
,这将满足您的第三个要求。
您的 rewrite
语句应该是安全的,但如果它们导致重定向循环,您可能需要用 if
块替换它们并在 $request_uri
中测试原始请求。例如:
if ($request_uri ~ ^([^?]*?)(/index|)(\.html)(\?.*)?$) {
return 301 /;
}
我想从 url 做重定向,这里有真实页面 - mysite。com/folder/index。html :
- 我的网站。com/folder/index。html 到我的网站。com/folder/
- 我的网站。com/folder。html 到我的网站。com/folder/
- mysite.com/index.html 到 mysite.com
这是我配置的一部分
server_name k.my.net www.k.my.net;
index index.html;
root /var/www/demo/k.my.net/current/public;
rewrite ^(.*/)index\.html$ ;
rewrite ^(/.+)\.html$ /;
location / {
try_files $uri $uri/ =404;
}
也尝试使用:
location / {
try_files $uri $uri/ @htmlext;
}
location ~ \.html$ {
try_files $uri =404;
}
location @htmlext {
rewrite ^(.*)$ .html permanent;
}
第三解ERROR_LOOP
location ~* ^/([a-zA-Z1-9_-]*/)index\.html$ {
return 301 ;
}
location ~* ^/([a-zA-Z1-9_-]*/?[1-9a-zA-Z_-]*)\.html$ {
return 301 //;
}
location ~* ^/([a-zA-Z1-9_-]*/?[a-zA-Z1-9_-]*)/$ {
try_files /.html //index.html =404;
}
您可以使用正则表达式 location
提取尾随 /
之前的 URI 部分,并使用 try_files
来测试这两个备选方案。有关详细信息,请参阅 this document。
例如:
location ~ ^(.*)/$ {
try_files /index.html .html =404;
}
location
也匹配/
,这将满足您的第三个要求。
您的 rewrite
语句应该是安全的,但如果它们导致重定向循环,您可能需要用 if
块替换它们并在 $request_uri
中测试原始请求。例如:
if ($request_uri ~ ^([^?]*?)(/index|)(\.html)(\?.*)?$) {
return 301 /;
}