当我提交与有我得到一个看起来像这样的URL多个同名复选框的表单:www.mysite.com/search.php?myvalue%5B%5D=value1&myvalue%5B%5D=value2
有什么方法,我可以删除%5B%5D使URL“漂亮”,喜欢的东西htaccess的?
码:
<form>
<input type="checkbox" name="myvalue[]" value="value1">
<input type="checkbox" name="myvalue[]" value="value2">
</form>
有什么方法,我可以删除%5B%5D使URL“漂亮”,喜欢的东西htaccess的?
号的[]
被保留字符在网址,因此他们绝对需要是URL编码 。
如果使用POST是不是一种选择,这是有道理的因为它是一个搜索表单,你最好的办法是只给他们以1左右的值每一个不同的名字。
<form>
<input type="checkbox" name="option1" value="1" />
<input type="checkbox" name="option2" value="1" />
</form>
或者,如果你真的坚持在具有相同名称的他们,那么你就应该自己提取查询字符串,而不是依赖于获得了一个参数时,返回一个数组的PHP特定功能[]
的后缀名。
$params = explode('&', $_SERVER['QUERY_STRING']);
foreach ($params as $param) {
$name_value = explode('=', $param);
$name = $name_value[0];
$value = $name_value[1];
// ... Collect them yourself.
}
这样,你可以继续使用braceless名。
<form>
<input type="checkbox" name="option" value="option1" />
<input type="checkbox" name="option" value="option2" />
</form>
[
和]
在一个URL保留字符,所以浏览器必须进行编码,以便他们的网址,以正常工作。 你不能在URL中这些字符。 你也不能有任何其他保留字符,如空格,与符号等,他们都将自动为您编码(在很多情况下,即使你手动输入网址到浏览器)。
如果你需要一个“漂亮网址”,您可以:
不使用的一种形式,在所有; 提供一个链接到一个已知的“漂亮”的网址。
接受丑陋的URL,但立即重定向它漂亮的URL在上述第1点。
避免使用尖括号都在你的字段名(不过这将意味着很多改变你的后端代码的太)
使用POST
的形式方法,使现场数据不会对所有的URL显示出来(不过这将意味着你没有一个链接,用户可以收藏)。
如果你必须“美化”这个URL,我的建议是上面的选项2。
坦率地说,不过,我不会担心。 人们得到waaaay以强调有关“漂亮”的网址。 我真的不知道为什么。
- 很少有人知道我其实过键入一个URL不仅仅是一个域名更长。
- 如果你担心SEO这个,不要 - 搜索引擎机器人知道ULR编码是什么,可以看看过去吧。
- 唯一的其他原因想要一个“漂亮”的网址是这样,它看起来很不错,如果用户通过电子邮件链接或东西分享。 说实话,如果你担心URL prettyness为和它有表单字段中它,然后它已经太丑陋了,只用
&
和=
迹象所有的地方。 编码括号真的不把事情弄得更糟。
所以我诚实的答案是:不出汗。 这是正常的; 忽略它; 得到与您的网站开发工作的重要部分。