2015-09-07 91 views
2

一個美麗的帖子的鏈接我有這樣一個鏈接:如何創建沒有ID

http://localhost/mywebsite/post.php?title=my-post-title&id=2 

或者

http://localhost/mywebsite/post/my-post-title/2/ 

(使用MVC)

但我需要證明沒有ID鏈接,就像互聯網上的許多網站一樣。

例如:

localhost/mywebsite/post/my-post-title/ 
+0

如果你已經有了第二個,那麼爲什麼不從最後刪除ID並讓它使用'my-post-title'作爲標識符呢? – MichaelRushton

+0

什麼是您的MVC? – aldrin27

+0

@MichaelRushton,ID是標識符。爲了安全和美麗,我想成爲一個祕密身份證。 –

回答

2

URL中必須包含一個唯一的標識符。沒有它,你的應用程序就無法知道要顯示哪個文章。在這種情況下,您需要爲您的帖子創建第二個唯一標識符(除整數ID之外):這稱爲slug

因此,除了idtitle列之外,還要添加slug列和UNIQUE鍵。這個列應該是一個URL職位名稱的字符串轉換(例如,「這是我的第一篇文章!」的標題可能會導致「這是我的第一篇文章」)。這可能需要預先添加一個額外的字符(或更多),如果slu is已被使用,即如果您有兩個帖子的標題爲「這是一個帖子」,那麼第一個將具有「這是一個帖子」第二個會有「這是一個後2」的slu slu。

一旦slug被創建並分配給該帖子,這將被用作URL中的標識符。使用mod_rewrite您將重寫http://localhost/mywebsite/post/my-post-titlehttp://localhost/mywebsite/post.php?slug=my-post-title,然後查詢數據庫中的帖子,其中slug = $_GET['slug']

+0

非常感謝。我認爲可以創建一個隱藏的ID。這是錯誤的。 –

5

您需要使用mod_rewrite來美化您的網址。檢查此鏈接了:http://www.sitepoint.com/guide-url-rewriting/

這裏是上面的例子mod_rewrite

RewriteEngine on 

RewriteRule ^mywebsite/(.*)/(.*)$ mywebsite/post/?title=$2 [QSA] 

通過 - How to beautify the URL?

+1

@Starkeen謝謝你的擡頭。回答更新爲缺少'?' –

+0

他想要沒有ID的鏈接。你剛剛重寫了他(可能)用於第二個示例鏈接的或多或少的內容。 – MichaelRushton

+0

@AndrewLyndem,謝謝你。但我想要一個沒有ID的鏈接。完全像:'sitepoint.com/guide-url-rewriting /'(沒有任何ID)***用'RewriteRule^post /(.*)/(.*)$ post.php?title = $ 1&id = $ 2 [ QSA]'我的鏈接從'http://localhost/mywebsite/post.php?title = MyTitle&ID = MyID'轉換爲'http:// localhost/mywebsite/post/MyTitle/MyID' ***其實我想隱藏安全和美麗的ID。 :-D –