繁体   English   中英

如何使用htaccess将POST请求从表单重写为用户友好的URL?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM