我有一个使用CodeIgniter构建的应用程序,第三方服务(电子邮件服务提供商)正在发出包含POST数据的http请求,以便在发生某些事件时。问题是,这个第三方服务发出请求的URL不是我完全可以修改的,具体来说,它在我指定的域和目录中向一个名为w_4.php
的文件发出请求。
我希望使用.htaccess将所有针对此文件的请求重写到我的codeigniter应用程序中的控制器,即api/my_controller/my_method
,而不是在CodeIgnitier堆栈之外使用此单独的文件。但我需要完整的请求中的POST数据,所以我认为无法使用重定向。
我在.htaccess中尝试过类似的东西:
RewriteCond $1 (w_4\.php)
RewriteRule ^(.*)$ index.php/api/my_controller/my_method
虽然请求确实被路由到codeigniter,但即使该控制器/路由确实存在,我也只得到404.
答案 0 :(得分:1)
答案是在RewriteRule中使用P
代理标志。如此处https://stackoverflow.com/a/359224/192694详细说明,该标志表示请求应完整地传递给代理模块,包括其POST数据。
了解更多信息:http://httpd.apache.org/docs/2.2/rewrite/flags.html#flag_p