Php 如何创建具有自定义名称的动态网页?

Php 如何创建具有自定义名称的动态网页?,php,Php,我环顾四周,尝试自己对这个话题进行研究,但目前还没有结果 我设置了一个动态网页,从数据库中查找ID以检索所需的元素。这当然会导致网页看起来像www.site.com/page?id=1 我想要的结果将像一个标题,这一页被称为。 例如,假设我有一个水果产品,用户来到我的网站,找到地址/fruit,它将是?id=1的内容,就像一个例子 我曾在许多网站上看到过这种方法,但不确定它是如何编程或工作的。这与htaccess文档有关吗 提前谢谢。感谢所有的帮助。虽然这已经被问了很多次,也被回答了很多次,但我

我环顾四周,尝试自己对这个话题进行研究,但目前还没有结果

我设置了一个动态网页,从数据库中查找ID以检索所需的元素。这当然会导致网页看起来像
www.site.com/page?id=1

我想要的结果将像一个标题,这一页被称为。 例如,假设我有一个水果产品,用户来到我的网站,找到地址
/fruit
,它将是?id=1的内容,就像一个例子

我曾在许多网站上看到过这种方法,但不确定它是如何编程或工作的。这与htaccess文档有关吗


提前谢谢。感谢所有的帮助。

虽然这已经被问了很多次,也被回答了很多次,但我知道很多人发现很难找到它,因为有很多常见的“噪音”词与之相关。出于这个原因,我认为值得再次回答

如果您使用Apache作为Web服务器(我假设您使用Apache,因为您提到了
.htaccess
),那么创建这些“干净URL”需要的是一组规则,并将浏览器请求的URL重写为另一个路径或脚本

您通常会在Apache配置或
.htaccess
中启用此功能,并且以一种简单的形式(一对一的映射)在其上看起来类似这样(前提是安装了
mod_rewrite
):

现在很明显,如果您有一堆要创建的动态页面,那么这并不能很好地扩展,所以您可以告诉所有不是真正的文件或目录的页面传递到文件进行处理,如下所示:

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule .* index.php [L]
在本例中,我们将重写任何未解析为index.php的实际文件或目录的请求,然后使用“last”标志停止处理其他规则。然后,在我们的PHP脚本中,我们可以使用
$\u服务器['path\u INFO']
访问虚拟路径(在本例中为
/fruit
),并执行我们想要的任何条件逻辑。如果该变量中没有任何内容,请确保在Apache配置或
.htaccess
中设置了该指令

在没有任何重写规则的情况下测试基本概念/逻辑的一种方法是使用类似
https://example.com/index.php/fruit
。然后,您将在index.php
$\u服务器['PATH\u INFO']
中看到包含字符串
/fruit
。您可以将URL重写到其他目录中的文件、链接重写规则、将浏览器重定向到其他URL,甚至可以编辑环境变量

关于使用
mod_rewrite
创建干净的URL,有很多很好的教程,所以我不打算在这里介绍所有的细微差别。只需知道它是一个非常强大的工具,但是如果您对正则表达式不太熟悉,或者迷失在配置中常见的许多规则中,那么很容易打破规则

请注意,如果这是一个现有的站点,您还需要使用
mod_rewrite
mod_redirect
将旧URL重定向到新URL,这样它们就不会中断(并且有一个URL用于搜索排名)

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule .* index.php [L]