繁体   English   中英

我可以重写URL,添加查询参数并保留表单数据吗?

Can I rewrite a URL, adding query params and preserve the form data?

提示:本站收集StackOverFlow近2千万问答,支持中英文搜索,鼠标放在语句上弹窗显示对应的参考中文或英文, 本站还提供   中文繁体   英文版本   中英对照 版本,有任何建议请联系yoyou2525@163.com。

我有一条规则:

RewriteCond %{HTTP_HOST}:%{QUERY_STRING} ^(\w+)\.t(.*)\.(\w+)?\.sprawk\.com:(.*)$
RewriteRule ^(.*) /api/translateHtmlPublic?tl=%1&su=%2&p=$1&q=%4 [B,PT,L]

这对GET请求非常有用。

但是,对于POST请求,q参数为null(这是我期望的),但是在我的Java Servlet中, HttpServletRequest.getReader()HttpServletRequest.getInputStream()均不提供数据。

使用Firefox Live标头,我看到正在发送:

POST /uid/contactSend.cfm HTTP/1.1
Host: fr.t51940.local.sprawk.com
Connection: keep-alive
Referer: http://fr.t51940.local.sprawk.com/uid/contact.cfm?country=137
Cache-Control: max-age=0
Content-Type: application/x-www-form-urlencoded
Content-Length: 146
userName=Nic&queryCountry=Libya&queryCode=137&userEmail=n.cottrell%40idea.int&Comment=Just+testing&captcha=Quotas&Submit=--+Envoyer+Commentaire+--

我知道,由于doPost方法被触发,因此servlet正在以POST形式接收它。 我知道Apache 2.x应该在简单的重写过程中自动保留POST数据,但是也许添加参数会抹掉内容数据吗?

更新:我刚刚意识到(通过转储所有参数),userName,queryCountry,queryCode参数正在通过request.getParameter(String)方法获取正确的值。 问题是我需要能够将原始表单参数名称与我在RewriteRule中引入的名称分开。

1 个回复
  1. POST的参数在正文中,而不在标头中。 您可以随意重写URL,而不会影响它们。

  2. 内容类型为application/x-www-form-urlencoded的POST请求的正文仅包含通过request.getParameter().检索的参数request.getParameter(). 通过request.getInputStream()request.getReader()读取正文不会传递任何内容。 (Servlet规范3,#3.1.1)

  3. 根据Servlet规范#3,应通过getParameter()检索添加到URL的参数。

  4. 无法将正文中的POST参数与标头中的URL参数区分开。 因此,您的解决方案或问题可能有问题。

3 我可以隐藏URL中的查询参数吗?

在我的Ember.js应用程序中,我正在处理查询参数列表更新。 我有一个奇怪的用例,其中我没有使用某些查询参数更新的URL。 我怎样才能做到这一点? ...

4 PHP重写url并保留发布的数据

我有一个PHP服务器,我想重写传入的URL。 由于传入请求是发布请求,我还希望在新网址上传输发布的数据。 我已设法使用以下重写规则重定向网址: 要么 我还设法使用以下重写规则保留帖子数据: 问题是我不能同时兼顾他们两个。 我究竟做错了什么? 有没有办法重定向网 ...

5 使用查询参数对 URL 进行 htaccess 内部重写

我有一个处理请求的 php 文件/var/www/somepath/index.php 我想要同一个文件来处理对 我不想将 php 文件复制到文件系统中的多个位置。 我认为使用内部重写规则会是一个更好的方法。 这是我放在顶级.htaccess文件/var/www/.htaccess : ...

8 如何使用mod_rewrite并保留url的片段(锚部分)?

我正在一个曾经是静态html(由脱机工具生成)的网站,并将其转换为PHP。 我将所有页面网址发送到解析该网址的单个PHP文件。 起初,我只是将FallbackResource MyPage.php停留在.htaccess文件中,并且工作正常……除了带有片段部分的URL。 许多旧的url类似 ...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

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