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

dy2hfwbg  于 2023-06-06  发布在  Apache
关注(0)|答案(4)|浏览(142)

我已经实现了搜索引擎优化的网址使用Apache 301重定向到一个'重定向。cfm'在根的网站,处理所有的网址建设和内容交付。
在301重定向过程中丢失发布数据。
到目前为止还找不到解决方案,已经尝试将post方法从重写中排除-最坏的情况是我们可以使用旧类型的URL作为post方法。
有什么办法吗?
谢谢

cmssoen2

cmssoen21#

使用307应该正是您想要的

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
  • 维基百科
a6b3iqyw

a6b3iqyw2#

大约在2021年更新这里的原始答案是在307状态代码重定向在浏览器中一致工作之前编写的。根据下面Hashbrown的回答,应该使用307状态码。
旧答案POST数据在重定向时被丢弃,因为客户端将对301指定的URL执行GET请求。句号。

唯一的选择是将POST参数转换为GET参数,并将它们粘贴到您重定向到的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,并避免重复内容的可能问题。

nkoocmlb

nkoocmlb3#

严格地说,正确的代码是308,对应于301的永久重定向性质,并保留请求方法:
https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/308
跨浏览器对代码308的支持是acceptable

0yycz8jy

0yycz8jy4#

使用301重定向进行一般URL重写不是正确的方法。这是一个性能问题(特别是对于移动的,但也是一般情况下),因为它会使页面的请求数量增加一倍。
考虑使用URL重写工具,如Tuckey的URLrewriteFilter或apache mod_rewrite
雷说的都是真的,这只是对你一般方法的补充评论。

相关问题