所以我一直注意到谷歌如何浏览我们网站的一些奇怪的结果。一个问题是这样的网址:
http://example.com/randomstring
正在谷歌上显示
的所有数据http://example.com/
所以在我看来有两种解决方案。一种是每当有人访问主要网址的子网址时添加301重定向,并将其重定向到父网址,或者只是给出一条404,其中有一条很好的消息说:“也许你的意思是 parent-url < / EM>”。
思考?我很确定我知道我想把它们送到哪里,但是什么是正确的网络礼仪? 404或301?
答案 0 :(得分:8)
正确的http方式是404,只要请求不存在的东西。
301适用于移动的内容,但这不是这种情况。
然而,今天很少遵循100%正确的http约定。根据上下文,将用户重定向到主页可能很有用,并通知未找到页面并重定向它们。虽然在这种情况下您应该使用303 See Other
代码。
但是,在不让用户知道重定向发生的情况下,您应该从不重定向。这让用户感到困惑,认为可能出现了问题。
答案 1 :(得分:3)
已发布的答案很好地涵盖了您的问题,但我认为转到源代码可能有一些价值:rfc 2616
10.3.2 301永久移动
已为所请求的资源分配了一个 新的永久URI和任何未来 对这个资源的引用应该使用 返回的URI之一。客户有 链接编辑功能应该 自动重新链接引用 Request-URI到一个或多个 服务器返回的新引用, 在可能的情况。这个回应是 可缓存,除非另有说明。
应该给出新的永久URI 通过响应中的位置字段。 除非请求方法是HEAD, 响应的实体应该 包含一个简短的超文本注释 指向新URI的超链接。
如果收到301状态代码 响应GET以外的请求 或HEAD,用户代理不得 自动重定向请求 除非可以通过确认 用户,因为这可能会改变 请求的条件 发行。
注意:在自动重定向POST请求之后 接收301状态代码,一些现有的HTTP / 1.0用户代理 将错误地将其更改为GET请求。
10.4.5 404 Not Found
服务器找不到与之匹配的内容 Request-URI中。没有任何迹象表明 条件是暂时的还是 常驻。 410(Gone)状态代码 如果服务器知道,应该使用 通过一些内部可配置 机制,旧资源 永久不可用,没有 转发地址。此状态代码 通常在服务器执行时使用 不希望透露具体原因 请求已被拒绝,或者当没有 其他答复也适用。
当然,通过这些事情,常见的用法优先于RFC的实际文本。如果整个世界都是单向的,那么指向一个文档并没有多大帮助。
答案 2 :(得分:2)
我说404是正确的做法,因为该位置从未有过有意义的资源,所以没有任何“永久移动”(301的含义),客户需要知道他们的URL是错误的,并且在此期间并没有改变。
但我还不太清楚问题是什么。 Google是否通过随机网址请求访问您的网站?那会很奇怪。或者,您的网站显示domain.com/randomstring
与domain.com/index.html
相同的结果?你应该改变,用404来解决。
答案 3 :(得分:0)
如果你知道他们应该去哪个网址,那就是301的用途。
答案 4 :(得分:0)
您是说您的网站在没有您控制权的情况下进行重定向?
当您想要使用301(永久重定向)时,该页面最初存在但已移动到其他位置。这是“地址卡的变更”。重组网站时的巨大救星。如果页面只是一些古怪的随机URL,那么传递404就会告诉蜘蛛(也是人类,但人们做的更少),这个页面从来就不存在,所以不要再回来浪费我的网络服务器时间。有些人不同意这一点,因为他们从不希望用户看到404页面。我认为这些代码是出于充分的理由而开发的,并且被搜索引擎很好地使用。
传递这些状态代码中的任何一个都不会阻止您提供“友好页面”(尽管如果浏览器允许,301通常只会重定向您)。
要记住的是,Google不喜欢重复的内容,因此您需要确保您的网站似乎没有使用不同的网址提供相同的内容。