堆栈溢出用户,
我有一个Apache应用程序,它需要接受发布到以下路径的数据:
/sample/HostChange/Submit
/sample/HostChange/SubmittoAPI
我现在使用的是下面的301重定向规则。这不是我想要的,因为POST被重定向了,第二个请求是一个GET,丢失了所有的数据。我看到301请求转到了正确的URL,但是第二个请求是一个GET,导致了一个405响应代码。
.htaccess文件:
RewriteEngine On
Redirect 301 /sample/HostChange/Submit /event
Redirect 301 /sample/HostChange/SubmittoAPI /date
我确信使用重定向是个问题。有人能帮我找出正确的RewriteCondition吗?我需要使用这个RewriteCondition来将这些POST命中重定向到新的路径,同时保持数据提交到应用程序。
非常感谢。
3条答案
按热度按时间m4pnthwp1#
我不认为你可以重定向一个POST(作为一个POST)。浏览器只是不会再次发布数据。
您必须使用Javascript输出一些HTML,以使浏览器将数据重新POST到新的URL。
或者不进行重定向,而是让一些服务器端代码首先接受POST数据,然后以某种方式在内部调度它(可能使用URL中的标识标记进行重定向)。
或者,如果数据较短,则重写URL以将数据作为查询参数包括在内。
vaj7vani2#
下面的一些东西应该可以工作,我现在没有一个apache示例,所以没有尝试regex,但是请检查重写日志,看看它是如何工作的。
0s0u357o3#
我遇到了同样的问题,对我来说,它并没有帮助真正重定向请求,而是重写它。我不知道这是否适用于你的问题。
下面是一些细节,我也很满意:PHP Rewrite url and preserve posted data