如何使用php从这种形式的URL中获取地址栏参数


How to get address bar parameters from URLs of this form with php?

我看到一个论坛(IPS)的URL方案如下:

www.example.com/index.php?/topic/12345

显示主题ID 12345。

我是php的新手,我想知道,他们到底做了什么来理解上面的请求要求主题ID12345?我只知道如何用$_POST$_GET收集信息。以下是我对后者的尝试:

echo "The user wants to see the topic ID " . $_GET["topic"];

但这需要一个形式的URL

www.example.com/index.php?topic=12345

那么,他们是如何实现这一计划的呢?

有两种方法:

  1. 你可以使用url重写将web服务器上的url重写为带有查询变量的url(你可以在SO上找到很多关于url重写的信息)
  2. 您可以分析像$_SERVER['REQUEST_URI']这样的服务器变量来拆分和分析php脚本中的url。您仍然需要重写,以确保所有请求都通过您的脚本,并且不会转到找不到的页面

他们可能使用了类似于名为mod_rewrite的apache模块的东西。CCD_ 5用于重写URL。在这种情况下?topic=12345正在被重写/翻译为topic/12345/。

branded3.com上有一篇不错的文章,其中概述了使用mod_rewrite可以做的一些很酷的事情。您需要Create beautiful url’s with mod_rewrite部分来了解如何使用它来创建外观更好的URL。