[英]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
在我的數據庫中,該文章如下所示:
id:3標題:這是我的生活別名:this-is-my-life簡介: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中完成,甚至可能是禪宗購物車。 問題是如何使用.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。 您可以在以下位置看到此內容:
我添加了一些調試輸出,如果滾動到頁面底部,可以看到這些輸出。 這有幫助嗎?
使用mod_rewrite創建漂亮的URL
為此,創建一個.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
代替:
www.mysite.com/article?id=31
我希望這有幫助!
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.