0

假设我在 www.example.com/registration.php 中有一个表单,表单提交到 www.example.com/process.php 并重定向到 www.example.com/welcome.php。因此,当我单击提交时,会生成一个发布响应并将其发送到 process.php。从那里发送重定向代码让我们说 301(永久)作为位置 www.example.com/welcome.php 的响应。我的问题 1) 在维基百科中它说

如果响应 GET 或 HEAD 以外的任何类型的请求而收到 301(或 302 中的相同情况,对于 303,307)状态码,客户端必须在重定向之前询问用户

所以如果我提交,我应该被要求确认,但这永远不会发生它直接进入welcome.php页面

2) 301-permanent 和 302(also 303, 307) - 用于上述表单提交场景时的临时重定向有什么区别

3)我不能真正从以下得到它

HTTP 响应状态代码 301 Moved Permanently 用于永久重定向,这意味着使用收到 301 Moved Permanently 响应的 URL 的当前链接或记录应更新为响应的 Location 字段中提供的新 URL。此状态代码应与位置标头一起使用。RFC 2616 规定:如果客户端具有链接编辑功能,它应该更新对请求 URI 的所有引用。

更新所有指向新 uri 的链接与浏览器(用户代理)有关。是否仅用于搜索引擎索引

最后

搜索引擎不索引临时重定向,永久重定向将当前请求 url 从重定向响应替换为新 url。搜索引擎是否也考虑了上述提交,如果我在 process.php 中给出 301 重定向响应以重定向到welcome.php,那么registration.php 将被搜索引擎索引数据库中的welcome.php 替换

4

1 回答 1

0

通常不建议使用 301 或 302 响应来重定向任何不是 GET 或 HEAD 请求的请求,并且许多用户代理不支持这一点。

我怀疑你的术语有点混乱。据我了解,/process.php 处理来自 /registration.php 的请求并发出带有 301 状态代码的响应,要求用户代理转到 /welcome.php。您从 RFC 2616 引用的场景是服务器接收到 /process.php 的 POST 请求并将 POST 请求本身重定向到 /process_v2.php,然后处理该请求。在您的示例中,最初的 POST 实际上并未重定向,POST 的结果包含重定向到 welcome.php,然后将使用 GET 请求检索该重定向。

我不确定我是否理解您的搜索引擎问题,据我所知搜索引擎不提交表单,所以我不相信welcome.php 会被编入索引。

于 2013-04-15T21:05:27.407 回答