>我创建了一个简单的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
我希望这有帮助!