Nginx 直接服务404
因此,我设置了一个Nginx服务器,它应该使用4个服务器块将所有http重定向到https(非www重定向到www) 问题是,任何404或不存在的http URL首先会得到301重定向,如果它假设存在,则可能是https版本(因此会创建一个额外的URL和重定向) 见示例: (一) 301重定向 (二) 404 (三)Nginx 直接服务404,nginx,drupal,url-rewriting,http-status-code-301,Nginx,Drupal,Url Rewriting,Http Status Code 301,因此,我设置了一个Nginx服务器,它应该使用4个服务器块将所有http重定向到https(非www重定向到www) 问题是,任何404或不存在的http URL首先会得到301重定向,如果它假设存在,则可能是https版本(因此会创建一个额外的URL和重定向) 见示例: (一) 301重定向 (二) 404 (三) 有没有办法将用户直接重定向到https 404(URL 3)?使用模块直接为404页面提供服务,而不会造成太多过载。我建议重定向到404页面是一个糟糕的选择,您应该在错误的URL上
有没有办法将用户直接重定向到https 404(URL 3)?使用模块直接为404页面提供服务,而不会造成太多过载。我建议重定向到404页面是一个糟糕的选择,您应该在错误的URL上为404页面提供服务 我这样说的理由是:
- 通过重定向离开页面,您发出的标题隐式地说“此URL上不存在内容,但它在此处存在”。我不确定各种搜索引擎对被重定向到404会有什么反应
- 我可以从我作为一个用户的经验中说,当我输入了一个字符时,让我更改URL是非常令人沮丧的。然后我需要花时间再次键入整个URL
- 您可以避免在.htaccess文件或其他文件中使用逻辑来判断页面是否为404。这将大大简化您的初始逻辑(by在每次页面加载时都会进行计算),并将删除比to中的单个重定向多得多的重定向
301
从一个不存在的页面重定向到一个/notfound
名字对象,是一种非常糟糕的做法,可能会对RFC不利
- 如果用户只是错误地输入了一个长URL的单个字符怎么办?现代浏览器使返回已键入的内容以进行更正变得非常重要。用户必须决定你的站点是否值得从头开始重新输入,或者你的竞争对手是否想到了更好的体验
- 如果用户只是简单地跟随一个断开的链接,该链接以非常明显的方式断开,并且可以很容易地修复,该怎么办?例如,
,其中一个绝对URL被创建者错误地输入为相对URL,或者可能是类似于http://www.example.org/www.example.com/page
,最后有一个额外的点。同样,你会完全把用户和正在发生的事情搞混,并提供一个糟糕的用户体验,如果不理会,URL很容易被及时更正/page.html的URI。
- 不管是好是坏,不加区分地从
重定向到http
方案是一种非常常见的做法,而不考虑给定页面是否存在。事实上,如果您使用HST,那么通过https
提供的内容实际上就变得毫无意义;具有策略的浏览器从那时起甚至不会通过http
请求任何内容http
- 毫无疑问,为了知道给定页面是否存在,您必须咨询后端。同样,您也可以从后端执行从
到http
的重定向;但它可能会占用您宝贵的服务器资源,几乎没有额外的好处https
- 此外,页面的存在或不存在可能由cookies的内容决定。同样地,如果您要求后端必须识别
请求的页面是否存在,那么您实际上就是在泄漏原本受http
保护的私有信息。(反过来,如果您的站点没有此类私人信息,那么您可能不应该首先使用https
。)https
- 执行NOT执行
重定向,从所有不存在的页面重定向到单个301
页面。非常糟糕的实践,非常糟糕的用户体验/notfound
- 从
任意重定向到http
,而不考虑页面是否存在,这完全是OK。事实上,这不仅没关系,而且这是上帝的旨意,因为对手不应该能够识别基于https
的站点是否存在给定页面,因此,如果您确实找到并实施了解决“问题”的解决方案,那么您将有效地创建安全漏洞和数据泄漏https