.htaccess 重定向匹配更改帖子以获取

.htaccess 重定向匹配更改帖子以获取,.htaccess,redirect,.htaccess,Redirect,我有两个分开的vhost。在www.one上,我在.htaccess上安装了这条唯一的线路 redirectMatch 301 ^(.*)$ http://d_blur_blur_s.com$1 除了将POST转换为GET的情况外,所有操作均按预期进行。 请注意,这篇文章有一些参数(我没有做,也不会修改),我只是想避免重复内容。我正在展示萤火虫的踪迹 我希望在主域名上使用redirectmatch或其他技巧重定向帖子 更新 我有一半的网站内部链接是用www写的,另一半没有。因此,我需要保持这

我有两个分开的vhost。在www.one上,我在.htaccess上安装了这条唯一的线路

redirectMatch 301 ^(.*)$ http://d_blur_blur_s.com$1
除了将POST转换为GET的情况外,所有操作均按预期进行。
请注意,这篇文章有一些参数(我没有做,也不会修改),我只是想避免重复内容。我正在展示萤火虫的踪迹

我希望在主域名上使用redirectmatch或其他技巧重定向帖子

更新
我有一半的网站内部链接是用www写的,另一半没有。因此,我需要保持这两个公开,但不能重复。我需要的得到转发作为得到和帖子转发作为帖子。问题很大,我有12000页索引,还有很多表单。因此,我首先在不更改代码的情况下搜索通用解决方案。我完全控制服务器


非常感谢

对于您发出的任何请求,无论是POST请求还是GET请求,服务器的重定向响应都会导致您的客户端发出GET请求(除非您以某种方式使它不会自动跟随重定向——有时我使用curl来实现这一点,但我不知道有任何广泛使用的浏览器可以轻松地为用户提供此功能)。客户端浏览器接受重定向提供的URL,并将其视为执行GET请求的URL。无论如何,POST数据都会被服务器丢弃,因为它是用于原始URL处的服务器资源的

如果您在.htaccess之外重定向,比如在PHP文件中构建重定向响应,那么您唯一的选择就是将POST参数转换为GET参数字符串,并将其添加到您发送回客户端的URL的末尾


我相当确信,在.htaccess文件或httpd.conf文件中,无论您是通过mod_rewrite模块使用redirect指令还是rewrite指令,都没有一种方法可以自动将POST参数追加到重定向中。

您使用307而不是301重定向以保留POST数据,但一些浏览器会向用户显示一个对话框如果他确定他想发送post数据,那么就不是真正的漂亮了


但是我宁愿从根本上解决这个问题。如果html表单引用了错误的域(例如
),那么将帖子发送到错误的域的唯一方法是使用mod_代理进行mod_重写,然后在RewriteRule中使用
p
标记

在您的
www
主机上,通过
httpd.conf
启用mod\u rewrite、mod\u rewrite和.htaccess,然后将此代码放在
文档根目录下的
.htaccess
中:

Options +FollowSymLinks -MultiViews
# Turn mod_rewrite on
RewriteEngine On
RewriteBase /

RewriteRule ^ http://d_blur_blur_s.com%{REQUEST_URI} [P]

我偶然发现了这篇文章->GET rewrite。类似这样的API调用:

  curl -X POST https://example.com/api/user/123456789
正在使用GET请求方法进入我的API框架

原因似乎与正文为空的POST请求有关。要避免此问题,您可以设置
内容长度
标题:

  curl -X POST https://example.com/api/user/123456789 -H 'Content-Length: 0'
或者在体内传递一些东西:

  curl -X POST https://example.com/api/user/123456789 -d ''
在HTTP 1.1中,状态码(307)指示应使用相同的方法和post数据重复请求。更改重定向类型以修复它。

我不想使用mod_rewrite,因为它会“生成”重复内容重复内容?在世界各地的Apache安装中,mod_rewrite的使用正是出于这个原因,即为了避免重复内容。您提出的配置在普通域和www子域上响应内容,在这两个域上响应内容相同,因此当您使用Proxy目标URL,即
http://d_blur_blur_s.com/something
将永远不会暴露在您的浏览器或搜索引擎中,因此不会产生任何重复内容。浏览器或搜索引擎现在只会显示您原始的
www
URL。很抱歉,很晚才返回此线程。使用.htacce无法完全满足您的需要仅限ss。我相信您将使用某种web框架,如Wordpress、Joomla等,为您的所有页面提供通用页脚功能。您可以在.htaccess中使用我上面的代码,首先将帖子数据获取到所需的域中,并在其中执行所有处理。稍后,在页脚中,您可以执行有条件的
301重定向
th粗略地编写代码(如PHP中的头函数)从搜索引擎中删除重复项。然而,这需要一点编码,这是您试图避免的。这是正确的,但是,我现在不想接触三方应用程序。我非常担心我的webhook处理器服务能够使用通配符子域前缀,直到我看到这一点。非常感谢!