我想知道通知用户其访问尝试被拒绝的最佳实践是什么。我意识到可能还有更多选择,但这些是我正在考虑的方法:
- 当我的脚本通过 header("Location:") 重定向用户时,通知用户到达专用的“访问被拒绝”页面
- 在请求的动态页面中通过消息通知用户
我想知道优缺点。目前我可以想出这些:
- 专业重定向:可能更困惑?
- 支持请求页面中的消息:HTTP 服务器上的请求较少?
最佳答案
我强烈建议不要重定向,原因很简单,原始 URL 不再可编辑。
如果我在网址中输入错误:
http://example.com/users/jwheared
并被重定向到:
http://example.com/denied
现在纠正我的拼写错误对我来说更麻烦:
http://example.com/users/jwheare
同样的原则也适用于 404 或任何其他错误页面。此外,如果这是临时服务器错误,则重定向到不同的 URL 会消除稍等片刻然后刷新页面的能力。
除了这个以用户为中心的建议之外,错误页面还应该提供相关的 HTTP error code (可能是其他答案中提到的 401 Unauthorized)。
最佳实践是遵循 HTTP 规范,并且所有 3xx 重定向状态代码都不适用于您所描述的情况。
编辑:另一个重要的一点是,这可能会损害您的搜索引擎性能。如果爬虫访问未经授权的页面并收到重定向,它会将所有未经授权的页面视为一个页面,并可能提高错误页面的排名。如果您发送正确的错误 header ,则爬网程序更有可能正确地将该 URL 识别为未经授权并忽略它。
网络爬虫通常是愚蠢的客户端,它们实现了 HTTP 规范的最低限度。考虑一下他们以及使用网络浏览器的人是值得的。
关于php - 使用 HTTP header 重定向到不同的页面/文档还是合并动态消息来通知用户访问被拒绝,哪个更好?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1329404/