我创建了一个简单的CMS,其中每篇文章都有id,title,别名(对于URL),introtext,fulltext等,如下所示:
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
在我的数据库中,文章如下:
id:3 标题:这是我的生活 别名:这就是我的生活 introtext:yadda ... yadda
目标是获取别名字段并使用它来创建人性化的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的基础。
我在CMS中经常看到这个,比如Joomla和Wordpress,甚至可能是zen-cart。问题是如何使用.htaccess中的PHP脚本或重定向功能实现此目的?
新信息(1月23日)
我们似乎正在和橘子说苹果,因为我不明白这是怎么回事。也许链接到简化的演示站点,您可以在其中看到正在运行的菜单ID结构。
这比初始示例稍微复杂一些,但遵循相同的一般想法。实时演示基于使用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,而是可以使用别名字段,以便当您将鼠标悬停在它上面时它看起来像about.php,但我很困惑如何让它返回实时URL。您可以在以下位置看到:
我添加了一些调试输出,如果滚动到页面底部,可以看到。这有帮助吗?
答案 0 :(得分:3)
使用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>
您的网址现在应如下所示:
www.mysite.com/this-is-my-life
INSTEAD OF:
www.mysite.com/article?id=31
我希望这有帮助!