.htaccess nginx重写html文件并添加尾部斜杠
我读了十几个倒带问题。大多数问题都是针对.php的,但我有简单的.html文件,所以about=>about.html。但我无法让nginx做到这一点:.htaccess nginx重写html文件并添加尾部斜杠,.htaccess,nginx,url-rewriting,.htaccess,Nginx,Url Rewriting,我读了十几个倒带问题。大多数问题都是针对.php的,但我有简单的.html文件,所以about=>about.html。但我无法让nginx做到这一点: 接受带或不带“/”的url 将domain.com/about和domain.com/about/重定向到domain.com/about.html 在URL中添加尾随斜杠,这样如果我写domain.com/about,就会写domain.com/about/ 我已尝试使用此代码 rewrite^/([a-zA-Z0-9]+)$/$1.ht
- 接受带或不带“/”的url
- 将domain.com/about和domain.com/about/重定向到domain.com/about.html
- 在URL中添加尾随斜杠,这样如果我写domain.com/about,就会写domain.com/about/
rewrite^/([a-zA-Z0-9]+)$/$1.html代码>
但它给了我404错误,url以“/”结尾。我也试过这个
rewrite^([a-zA-Z0-9]+)/?$$1.html
出现相同错误
有人建议我应该使用trytry\u文件
我也尝试了这个方法,它给出了500个错误:
location / {
rewrite ^(.*)$ /%1 redirect;
rewrite ^/([^\.]+)$ /$1.html break;
}
我试图将apache从suggestion转换为nginx(winginx.com),但没有成功
此代码不起作用。我正在尝试重定向并添加尾部斜杠:
if (!-e $request_filename){
rewrite ^/(.*)/$ /$1 redirect;
}
if (!-e $request_filename){
rewrite ^/(.*[^/])$ /$1/ redirect;
}
任何建议都会让我很高兴。我想在这里试试看是合适的。例如:
location /about {
try_files about.html;
}
我已经测试了此配置,它似乎符合您的要求(YMMV):
第一个位置尝试按原样提供资源文件所必需的文件。否则,它将遵从指定的位置
命名位置将永久重定向任何不以/
结尾的URI。否则,将提供.html
文件
有关详细信息,请参阅和。最简单的解决方案是将about.html
重命名为about/index.html
,然后nginx
的索引模块可以满足您的需要。这听起来有点过分了。不是单个html文件,而是为每个html文件创建一个文件夹,并将index.html文件中的内容放入该文件夹?!?将适用于about.html,但我有很多文件,about.html、contact.html、projects.html、gallery.html等。您可以为每个文件创建一个块或使用正则表达式,如:location~ ^/(.*)/?${try_files$1.html;}
Hi,很抱歉,这不起作用。通过这个配置,我在index.html(root)上获得了一个404页面。当我点击例如“projects”时,它显示projects.html,URL为“”,但所有css和图像都被破坏。在项目页面上,我点击链接“about”(页面是about.html),我得到“->它应该是”并从那里转到“…”等。因此有一个内部循环。使用路径相关资源(css&js)将不适用于您的方案,因为浏览器假定尾部的/
是一个子目录。到about.html
的链接可能应该是/about.html
,以避免出于同样的原因获得/project/about.html
。我不了解内部循环-但这是一个很大的风险与这些类型的计划。我同意风险理查德!我重写了绝对路径,css和图像正在工作。也使链接绝对化。修复了错误的URL。感谢您的洞察力和理解我试图解决的问题!
root /path/to/root;
location / {
try_files $uri @rewrite;
}
location @rewrite {
rewrite ^(.*[^/])$ $1/ permanent;
rewrite ^(.*)/$ $1.html break;
}