如何使用数据库中的别名和 ID 创建用户友好的 URL


How do I create a people-friendly URL using an alias and ID from database?

>我创建了一个简单的CMS,其中每篇文章都有一个ID,标题,别名(用于URL),内联文本,全文等:

create table articles (
    id int auto_increment primary key,
    title varchar(80),
    alias varchar(80),
    introtext text,
    fulltext text,
    published tinyint(1),
    date date
)

使用 ID 访问文章很容易,URL 如下所示:

www.mysite.com/article?id=31

或者也许 www.mysite.com/article?menuid=3&id=31

在我的数据库中,这篇文章看起来像:

编号: 3标题: 这是我的生活别名:这就是我的生活简介:亚达...亚达

目标是获取别名字段并使用它来创建一个人性化的 URL,如下所示:

www.mysite.com/this-is-my-life.php

www.mysite.com/index.php?article=this-is-my-life

www.mysite.com/?article=this-is-my-life

在任何情况下,文章 id 都用于从表中获取别名,别名将成为用户友好 URL 的基础。

我经常在像Joomla和Wordpress这样的CMS中看到这一点,甚至可能是zen-cart。问题是如何使用 .htaccess 中的 PHP 脚本或重定向函数来实现这一点?

新信息(1月23日)

我们似乎在谈论苹果和橙子,因为我不明白这应该如何工作。也许指向简化演示站点的链接,您可以在其中查看正在运行的菜单 ID 结构会有所帮助。

http://dottedi.us/test

这比初始示例稍微复杂一些,但遵循相同的一般思想。现场演示基于使用 joomla 菜单管理器创建菜单项,包括 URL 和可选别名。它看起来像:

www.dottedi.us/test/index.php?option=com_k2&view=item&layout=item&id=5

Joomla和其他CMS系统(Wordpress,Drupal等)都有一个全局配置参数,以启用他们所谓的SEO友好URL。我称它们为亲民。它将采用上述 URL 并将其转换为使用表中别名字段的人友好版本,因此上述 URL 将变为

www.dottedi.us/test/about.php(带或不带.php后缀)

与其使用链接字段作为可见 URL,我可以使用别名字段,以便当您将鼠标悬停在它上面时.php它看起来像这样,但我对如何让它返回实时 URL 感到困惑。您可以在以下位置看到这一点:

http://dottedi.us/test2

我添加了一些调试输出,如果您滚动到页面底部,您可以看到这些输出。这有帮助吗?

> 使用 mod_rewrite 创建漂亮的网址

为此,请创建一个.htaccess文件并将其粘贴到其中。然后将其上传到站点根文件夹的索引。

快速提示:您只需打开记事本 (PC) 或文本编辑 (Mac) 等文本编辑器,然后将其另存为 .htaccess 即可创建.htaccess文件。

<IfModule mod_rewrite.c>
  #article rewrite
  RewriteEngine On
  RewriteCond %{REQUEST_FILENAME} !-d
  RewriteCond %{REQUEST_FILENAME} !-f
  RewriteRule ^(.*)$ /article.php?id=$1 [QSA]
</IfModule>

您的 URL 现在应如下所示:

www.mysite.com/this-is-my-life

而不是:

www.mysite.com/article?id=31

我希望这有帮助!