我已经实现了搜索引擎优化网址使用Apache 301重定向到一个'redirect.cfm‘在根的网站,它处理所有网址建设和内容交付。
Post数据在301重定向期间丢失。
到目前为止找不到解决方案,已经尝试从重写中排除post方法-最坏的情况我们可以使用post方法的旧类型URL。
有什么可以做的吗?
谢谢
发布于 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资源:
http://www.example.com/finalpage.php?form_data_1=123&form_data_2=666您可以将此链接记录添加到页面的标题部分:
<link rel="canonical" href="http://www.example.com/finalpage.php" />这将确保所有的SEO值将被给予http://www.example.com/finalpage.php,并避免重复内容可能出现的问题。
发布于 2014-02-17 13:10:55
使用307应该是exactly what you want
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发布于 2013-06-19 20:19:43
使用301重定向进行常规URL重写不是可行的方法。这是一个性能问题(特别是对于移动设备,但在一般情况下也是如此),因为它会使页面的请求数量加倍。
考虑使用URL重写工具,如Tuckey的URLrewriteFilter或apache mod_rewrite。
Ray所说的都是真的,这只是对你的一般方法的补充。
https://stackoverflow.com/questions/13628831
复制相似问题