想像一下我们在主页上:www.example.com
<a href="category/Pizzas">Pizzas</a>
单击此超链接时,地址栏上的URL将为:
www.example.com/category/Pizzas
它将向我们展示各种比萨.问题是我的服务器中没有类似category / Pizzas的路径.它的工作方式是将category和Pizzas传递给两个查询字符串(page和cat),这些查询字符串将存储在$_GET中.所以真正的网址是:
www.example.com/?page=category&cat=Pizzas
您可以在主页上看到我们还有一些其他超链接,并且它们具有不同的URL.例如:
<a href="category/Salads">Salads</a>
<a href="category/Wraps">Wraps</a>
<a href="category/Grinders">Grinders</a>
当您单击它时,查询字符串(page和cat)将从URL捕获值并相应地呈现.
我不了解的部分是如何以及在何处定义查询字符串(在本例中为:page和cat),并从URL(例如category / Pizzas)捕获值,因此我们可以使用page = category& cat = Pizzas.源代码中的这两个查询字符串没有HTML格式.它只是完美地工作.
PS.如果您有兴趣,这是我正在谈论的项目.这不是我的项目.
https://github.com/nelsonreitz/project0
解决方法:
在该仓库中,查看public / .htaccess
这就是魔术发生的地方.实际上是由Web服务器完成将url映射到参数的工作.代码如下:
RewriteEngine on
RewriteBase /
RewriteRule ^category/(.*)$index.PHP?page=category&cat=$1 [L]
这是说任何看起来类似于category /的url都将被重写为index.PHP?page = category& cat =
因此index.PHP实际上处理所有这些请求,并且具有正确的GET值-即使所使用的URL不同.