[英]How do I rewrite a POST request from a form to a user-friendly URL with htaccess?
作为主题-如何使用htaccess将POST请求从表单重写为用户友好的URL?
场景:
我有一个使用搜索表单的网页。 当我使用method =“post”提交该表单时,它可以完美地运行。 但是,我在浏览器地址栏中没有收到任何文本(当然),但这正是我想要的! 通过使用method =“ POST” ,而不是 method =“ GET” !
假设我搜索“香蕉”。 PHP脚本翻译POST请求,该脚本显示其中带有香蕉一词的所有收据。 但是,URL当然会显示类似http://www.example.com/search/的信息 (是的,我为此使用mod_rewrite)。 我希望网址看起来像http://www.example.com/search/banana/ 。
来自服务器的原始请求看起来像.... xample.com/index.php?p=search,帖子当然是隐藏的,否则将是.... xample.com/index.php?p=search&q=香蕉。
我不是mod_rewrite规则和条件的新手,但我无法让它工作......
提前致谢!
引用自: Apache mod_rewrite问题
您不能将POST数据用于mod_rewrite。 这是因为POST数据不在http请求的HEADER中,而在BODY中。
我的建议是你在发布页面上执行一个动作,为URL添加前缀,这意味着你甚至不需要重写。
如果我理解正确:您希望浏览器POST到http://www.example.com/search/banana/
而不是http://www.example.com/search/
,其中banana
是表单的输入之一-fields。 (是吗?)那么,这实际上不是mod_rewrite问题,而与HTML问题一样多:它发生在客户端。 由于HTML不支持此功能,因此实际上是JavaScript问题。 您必须为表单编写一个on- submit
处理程序,或者为输入字段编写一个on- change
程序。 在任何一种情况下,处理程序都必须根据输入字段的内容修改表单的action
。
(注意:以上情况在一定程度上也适用于GET请求。主要区别在于,对于GET请求,您可以通过从http://www.example.com/search/?q=banana
进行HTTP重定向来规避此问题http://www.example.com/search/?q=banana
to http://www.example.com/search/banana/
;因此浏览器最初将获取http://www.example.com/search/?q=banana
,然后获取http://www.example.com/search/banana/
。但是根据HTTP规范,您不能以相同的方式重定向POST请求。)
您将需要javascript。
我之前回答过类似的问题 。 当有人点击提交按钮时,您需要更改form
标记处的action
属性。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.