在PHP中不使用查询字符串形式传递查询参数

时间:2013-01-06 12:02:24

标签: php html http

我想使用$_GET传递参数,但不想使用查询形式:

showevent.php?event=usa 

应显示在网址中,而不是

site.com/events/usa

对于个人资料:

site.com/username

1 个答案:

答案 0 :(得分:1)

浏览器不知道如何格式化这样的网址。通过GET提交表单的标准是查询字符串,这是浏览器唯一能做的事情。两个选项:

  1. 通过Javascript构建URL并以编程方式重定向浏览器。这有一个缺点,需要一个支持Javascript的客户端。
  2. 通过普通查询字符串提交,然后在服务器上重写URL并重定向客户端。 E.g:

    header('Location: /events/' . $_GET['event']);
    exit;
    

    这样做的缺点是每次都需要两次往返服务器,并且未经重写的URL可能会在用户的浏览器中短暂闪烁,但它最终会为您提供最好的URL。

  3. 您可能需要两者的组合,其中2.是非Javascript客户端的后备。