apache - Apache 301重定向和保留发布数据

标签 apache rewrite http-post http-status-code-301

我已经使用Apache 301重定向实现了SEO URL,该URL重定向到网站根目录中的“redirect.cfm”,该URL处理所有URL构建和内容交付。

301重定向期间,发布数据丢失。

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

有什么可以做的吗?

谢谢

最佳答案

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

唯一的选择是将POST参数转换为GET参数,并将其附加到您重定向到的URL的末尾。不能在.htaccess文件重写中完成此操作。

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

更新:正如对此答案的注释中指出的那样,如果您确实重定向到另一个指定POST参数的URL,并且该URL也无需参数就可以访问(或params是变量),则应指定指向该页面规范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,并避免重复内容可能造成的问题。

关于apache - Apache 301重定向和保留发布数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13628831/

相关文章:

apache - 服务器如何维护 session

Apache 多个站点,一个有效,另一个无效

php - 使用 PHP 和 Apache 设置 HTTP 使 header 过期

java - 无法将 GPS 坐标发送到服务器

url-rewriting - 使用 Flask+Nginx 提供基于动态 URL 的静态文件?

regex - 在 nginx 上的正则表达式重写测试中使用变量

javascript - Greasemonkey AJAX 帖子似乎不起作用,即使指定了@grant

.htaccess - 如何重定向不存在的子域?

c# - 表单反序列化不起作用

python - AWS HTTP API - Python 请求与 Dart HTTP 中的请求相同但响应不同