mod_rewrite:如何去除查询字符串的url但保留它的值

时间:2010-10-28 15:29:38

标签: mod-rewrite query-string

我想使用mod_rewrite剥离它的查询字符串的URL,但保留查询字符串的值,例如,id喜欢改变:

http://new.app/index.php?lorem=1&ipsum=2

干净利落:

http://new.app/

但保留loremipsum的值,因此在index.php内:

$_GET["lorem"]

仍会返回1等。

这是我对mod_rewrite的第一次涉猎,所以非常感谢任何帮助,如果你能准确解释你的解决方案是如何工作的,我下次也可以学到一点!

谢谢!

2 个答案:

答案 0 :(得分:0)

我不明白你想要什么。您的第一个网址是外部表单,用户可以看到并可以在其浏览器中输入。

第二种形式几乎删除了所有信息,因此当您将其发送到服务器时,服务器如何知道lorem=1&ipsum=2

如果您的问题确实是

  

如果用户位于网站深处,点击带有大量信息的网址,我如何使浏览器中的网址看起来不错呢?

然后有两种解决方案:

  1. 您可以将小信息传递给服务器,并将它们全部保存在会话中。我不喜欢这样,因为用户无法获取网址,将其显示给朋友并让他看到同一页面。
  2. 您可以将整个网站放在仅包含一个<frameset>的HTML <frame>中。这样,顶级窗口的URL不会改变,只有内部URL(浏览器不显示)。

答案 1 :(得分:0)

正如 Roland 所提到的,您似乎并不了解重写的方式。它通常使用.htaccess中的Apache mod_rewrite来完成,它以 /index.php?lorem=1&ipsum=2

的方式将这些漂亮的URL重写为php脚本。

即使Joomla使用.htaccess,除了它有一个重写规则将一切传递给PHP脚本,该脚本在PHP中进行实际重写。

你不理解的是,在php脚本的“漂亮”版本中仍然需要存在一些东西来拉取$ _GET [“lorem”]的值

所以它会像 http://new.app/lorem/ http://new.app/section/lorem 那样(使用mod_rewrite)在.htaccess中)重写到php脚本。