2013-04-29 69 views
1

我有一个简单的文本框如何删除'?'在GET的URL中?

<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] 
+3

加入您与:) – Akdr 2013-04-29 13:58:04

+0

添加了的.htaccess – Tyrick 2013-04-29 14:00:21

+0

试图通过这个阅读试图代码: [http://stackoverflow.com/questions/11099502/htaccess-rewitecond-query-string-with-2-variable-and-rewrite-properly][1] [1]:HTTP: //stackoverflow.com/questions/11099502/htaccess-rewitecond-query-string-with-2-variable-and-rewrite-properly – ChaseTheSun 2013-04-29 14:05:07

回答

0

这个?快到因为方法=“获取”的形式,如果将其更改为POST,所以你会得到在URL数据隐伏没有,另外一点让“东西= something2”的网址,你必须使用Java脚本来改变这种形式通过附加你的一部分,而这个Java脚本的动作中可以存在:文本字段的

的onblur

的onClick的提交表单的

的onsubmit但你必须TI句柄你自己提交

+0

谢谢,这似乎有点容易对付! :) – Tyrick 2013-04-29 14:25:17

-2

我可能是错的,但我不认为你可以。 '?'告诉网址后面的查询字符串。至少不是用于传递未加密的数据。密码/用户名当然是一个不同的故事。

+0

有你们从来没有听说过的URL重写? – MMM 2013-04-29 14:04:09

+0

@MMM url重写是服务器端的事情,它与浏览器发送的内容没有任何关系。如果浏览器处理提交,你不能改变,所以唯一的选择是防止它发生并手动构建网址。 – eis 2013-04-29 14:18:28

+0

当然,他们是服务器端的东西,但服务器并不在乎你发送的东西。您可以发送'domain.com/666hello',服务器可以读取前3位数字,然后根据字符串提供一些内容。你说过一个人做不到,但这是可能的。此外,你的回答似乎有点暧昧(“至少对于未加密的数据”,“密码/用户名是一个不同的故事”等) – MMM 2013-04-29 14:22:26

3

一个标准查询参数是如何在一个URL来看看,这是由将它们与?分开。浏览器只知道这个标准并遵守它。

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

您在RewriteRule内部重写的URL,它不会改变URL看起来如何到客户端。你必须发出重定向从服务器要做到这一点,这应该是这样的:example.com/foo?bar=baz

  • 服务器重写URL响应:Location: /foo/bar=baz
    1. 浏览器中使用标准的查询参数的形式提交
    2. 客户重复请求example.com/foo/bar=baz
    0

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

    1. 防止提交URL中当您使用GET
    2. 写正确.htaccess文件来处理

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

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