首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Apache 301重定向和保留post数据

Apache 301重定向和保留post数据
EN

Stack Overflow用户
提问于 2012-11-29 23:13:43
回答 3查看 47.2K关注 0票数 36

我已经实现了搜索引擎优化网址使用Apache 301重定向到一个'redirect.cfm‘在根的网站,它处理所有网址建设和内容交付。

Post数据在301重定向期间丢失。

到目前为止找不到解决方案,已经尝试从重写中排除post方法-最坏的情况我们可以使用post方法的旧类型URL。

有什么可以做的吗?

谢谢

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-11-29 23:18:27

大约2021年的更新这里的原始答案是在307状态码重定向在浏览器上一致工作之前编写的。根据Hashbrown下面的回答,应该使用307状态代码。

旧应答URL数据在重定向时被丢弃,因为客户端将对301指定的执行GET请求。句号。

唯一的选择是转换POST参数以获取参数,并将它们添加到您要重定向到的URL的末尾。这不能在.htaccess文件重写中完成。

一种选择是捕获对url的POST请求以进行重定向,并将其传递到页面以处理重定向。您需要在代码中进行参数的转置,然后以这种方式发出带有附加了新url的参数的重定向标头。

更新:正如此答案的注释中所指出的,如果您确实重定向到另一个指定了POST参数的URL,并且该URL也可以在没有参数的情况下访问(或者参数是可变的),那么您应该为该页面指定一个指向规范URL的链接。

假设POST表单重定向到以下GET资源:

代码语言:javascript
复制
   http://www.example.com/finalpage.php?form_data_1=123&form_data_2=666

您可以将此链接记录添加到页面的标题部分:

代码语言:javascript
复制
   <link rel="canonical" href="http://www.example.com/finalpage.php" />

这将确保所有的SEO值将被给予http://www.example.com/finalpage.php,并避免重复内容可能出现的问题。

票数 31
EN

Stack Overflow用户

发布于 2014-02-17 13:10:55

使用307应该是exactly what you want

代码语言:javascript
复制
307 Temporary Redirect (since HTTP/1.1)
In this case, the request should be repeated with another URI; however, future requests
should still use the original URI.[2] In contrast to how 302 was historically implemented,
the request method is not allowed to be changed when reissuing the original request. For
instance, a POST request should be repeated using another POST request

  • Wikipedia
票数 70
EN

Stack Overflow用户

发布于 2013-06-19 20:19:43

使用301重定向进行常规URL重写不是可行的方法。这是一个性能问题(特别是对于移动设备,但在一般情况下也是如此),因为它会使页面的请求数量加倍。

考虑使用URL重写工具,如Tuckey的URLrewriteFilter或apache mod_rewrite

Ray所说的都是真的,这只是对你的一般方法的补充。

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13628831

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档