PHP-如何将页面标题添加到URL?以及如何使用PHP创建一个干净的url

PHP-如何将页面标题添加到URL?以及如何使用PHP创建一个干净的url,php,Php,我想知道如何使用PHP创建干净的URL。我是在PHP中完成这些工作,还是需要以某种方式使用mod_rewrite?有人能用外行的语言给我解释一下吗 这是我当前的url元素链接以及它在浏览器中的外观 http://www.example.com/members/1/posts/page.php?aid=123 但我想让它读一下书名 http://www.example.com/members/1/posts/title-of-current-page/ 首先,您需要使用以下函数从PHP生成“当

我想知道如何使用PHP创建干净的URL。我是在PHP中完成这些工作,还是需要以某种方式使用mod_rewrite?有人能用外行的语言给我解释一下吗

这是我当前的url元素链接以及它在浏览器中的外观

http://www.example.com/members/1/posts/page.php?aid=123
但我想让它读一下书名

http://www.example.com/members/1/posts/title-of-current-page/

首先,您需要使用以下函数从PHP生成“当前页面标题”:

function google($string){
    $string = strtolower($string);
    $string = preg_replace('/[^a-zA-Z0-9]/i','-',$string);
    $string = preg_replace("/(-){2,}/",'$1',$string);
    return $string;
}
第二件事,您需要进行重写,但您应该以“/123当前页面标题”的形式保留辅助信息

重写会像这样(我忽略了你的整个URL)


您必须使用重写将所有请求定向到现有的php文件,否则会出现所有
404notfound
错误,因为您试图获取一个根本不存在的页面


除非你重写你的
404
页面来处理所有请求,而且你肯定不想去那里…

你可以使用mod_rewrite:

您需要在web文件夹的顶层编辑名为.htaccess的文件。在这里,您可以指定某些设置来控制Apache访问此文件夹及以下文件夹中项目的方式

第一件事。让我们打开mod_rewrite:
RewriteEngine on

RewriteRule ^([a-z]+)/([a-z\-]+)$ /$1/$2.php [L]
该规则匹配任何由小写字母组成的URL,后跟一个/,然后是更多的小写字母和/或连字符,并在末尾附加.php。它跟踪括号()中的任何内容,并在后面将它们称为$1和$2,即第一个和第二个匹配项。因此,如果有人访问这些URL:

它将转换为以下内容:

您将在以下方面找到更多详细信息:


您是否也只使用php或某种框架?这些url看起来像是来自一个框架。@codethis,没有框架,只是我用phpif编码的。如果您有一个与标题匹配的数据库,则不需要在url字符串中保留数字。只需编写一个执行查询查找的函数。当然,当有两个相同的名字时就会出现问题,而且我认为如果id=123 LIMIT 1更快,更可靠,如果他更改了标题,来自例如Google的用户将得到空白页面,这样id总是一样的。并不是说我不同时使用这两种方法。那么,在创建干净的URL时,我应该在哪条路径上使用什么呢
RewriteRule ^([a-z]+)/([a-z\-]+)$ /$1/$2.php [L]