1

我有一个简单的文本框

<form action="http://www.google.com" method="get">
Something <input type="text" name="something">
<input type="submit">
</form> 

如果我在输入中输入内容,这将是 URL https://www.google.com/?something=something2- 在这种情况下something2是用户键入的内容。但我想看到这样的网址https://www.google.com/something=something2

我试过了,.htaccess但我失败了。

RewriteEngine On
RewriteRule .*  /%{QUERY_STRING}? [L]
4

4 回答 4

3

查询参数在 URL 中的显示方式有一个?标准,那就是用. 浏览器只知道这个标准并遵守它。

如果您想要一个不使用查询参数的自定义 URL 架构,请在表单提交时使用 Javascript 自己构建 URL,或在服务器端重定向,以使 URL 看起来像您想要的那样。

RewriteRule你有用于内部重写URL,它不会改变 URL 在客户端的外观。您必须从服务器发出重定向才能发生这种情况,如下所示:

  1. 浏览器使用标准查询参数提交表单:example.com/foo?bar=baz
  2. 服务器以重写的 URL 响应:Location: /foo/bar=baz
  3. 客户重复请求example.com/foo/bar=baz
于 2013-04-29T14:05:10.700 回答
0

这个 ?即将到来是因为表单中的 method="get",如果您将其更改为 POST,那么您将获取隐藏在 URL 中的数据,另一点要在 URL 中获取“something=something2”,您必须使用 java 脚本进行更改通过附加您的部分来执行此表单的操作,并且此 java 脚本可以存在于:

文本字段的 onBlur

点击提交

onSubmit of Form 但您必须自己处理提交

于 2013-04-29T14:15:44.670 回答
0

我不知道您为什么要这样做,但是您需要做两件事:

  1. 防止在您使用时以这种方式提交 URL 的浏览器的默认行为GET
  2. 编写一个适当的.htaccess文件来处理它

要执行第一件事,请将事件处理程序添加到onsubmit表单上的事件,防止默认行为,然后通过附加输入值将用户重定向到您要使用的 URL。

第二件事可以通过使用重写规则来实现。

于 2013-04-29T14:08:16.470 回答
-2

我可能错了,但我不认为你可以。这 '?' 告诉 URL 查询字符串中的内容。至少对于您传递的未加密数据而言不是这样。密码/用户名当然是另一回事。

于 2013-04-29T14:02:16.343 回答