使用htaccess删除查询字符串表单URL

时间:2012-10-21 16:22:05

标签: php string .htaccess url

  

可能重复:
  Clean URLs for search query?

我制作了一个用于检查颜色代码的php网页,这里是前四行

if(isset($_GET['c']))
$hex = $_GET['c'];
elseif(!isset($_GET['c']))
$hex = $_POST['c'];

我的htaccess有:

RewriteEngine On
RewriteRule ^([a-zA-Z0-9]{6})$ index.php?c=$1 [L]

如果我输入site.com/ffcdee,它会成功显示颜色#ffcdee 但如果我使用输入框:

<form action="">
<input type="text" name="c" >
<input type="submit" value="Search" id="search-submit">
</form>

它显示site.com/?c=ffcdee, 我尝试将输入名称更改为其他单词,但脚本不再起作用.. 如何从网址中删除?c =?

1 个答案:

答案 0 :(得分:1)

只需使用http post方法而不是http get:

<form action="" method="post">
<input type="text" name="c" >
<input type="submit" value="Search" id="search-submit">
</form>

当使用http post请求时,查询参数不会在url内部传递编码,而是作为请求的单独“正文”移交。该主体的内容是你最终在php中作为$ _POST超全局变量呈现的内容。

如果您想了解其工作原理,请使用wireshark之类的网络嗅探器来转储http流量。您将看到并理解get和post之间的区别。