【问题标题】:remove query string form url with htaccess [duplicate]使用 htaccess 删除查询字符串表单 url [重复]
【发布时间】:2012-10-21 16:22:05
【问题描述】:

可能重复:
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, 我尝试将输入名称更改为其他单词,但脚本不再起作用.. 如何从 url 中删除 ?c=?

【问题讨论】:

  • 使用重定向,或根据 Javascript 更新请求 URL。
  • 还有一个问题:如果我使用输入框输入三位颜色十六进制代码它可以显示颜色(/?c=F00),但是如果我在url中输入三位颜色十六进制代码( /F00) 它不工作。

标签: php string .htaccess url


【解决方案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 之间的区别。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-08-18
    • 1970-01-01
    • 1970-01-01
    • 2017-06-01
    • 2012-12-13
    • 1970-01-01
    • 2016-10-05
    相关资源
    最近更新 更多