一個美麗的帖子的鏈接我有這樣一個鏈接:如何創建沒有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/
一個美麗的帖子的鏈接我有這樣一個鏈接:如何創建沒有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/
URL中必須包含一個唯一的標識符。沒有它,你的應用程序就無法知道要顯示哪個文章。在這種情況下,您需要爲您的帖子創建第二個唯一標識符(除整數ID之外):這稱爲slug。
因此,除了id
和title
列之外,還要添加slug
列和UNIQUE
鍵。這個列應該是一個URL職位名稱的字符串轉換(例如,「這是我的第一篇文章!」的標題可能會導致「這是我的第一篇文章」)。這可能需要預先添加一個額外的字符(或更多),如果slu is已被使用,即如果您有兩個帖子的標題爲「這是一個帖子」,那麼第一個將具有「這是一個帖子」第二個會有「這是一個後2」的slu slu。
一旦slug被創建並分配給該帖子,這將被用作URL中的標識符。使用mod_rewrite
您將重寫http://localhost/mywebsite/post/my-post-title
至http://localhost/mywebsite/post.php?slug=my-post-title
,然後查詢數據庫中的帖子,其中slug = $_GET['slug']
。
非常感謝。我認爲可以創建一個隱藏的ID。這是錯誤的。 –
您需要使用mod_rewrite
來美化您的網址。檢查此鏈接了:http://www.sitepoint.com/guide-url-rewriting/
這裏是上面的例子mod_rewrite
:
RewriteEngine on
RewriteRule ^mywebsite/(.*)/(.*)$ mywebsite/post/?title=$2 [QSA]
@Starkeen謝謝你的擡頭。回答更新爲缺少'?' –
他想要沒有ID的鏈接。你剛剛重寫了他(可能)用於第二個示例鏈接的或多或少的內容。 – MichaelRushton
@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 –
如果你已經有了第二個,那麼爲什麼不從最後刪除ID並讓它使用'my-post-title'作爲標識符呢? – MichaelRushton
什麼是您的MVC? – aldrin27
@MichaelRushton,ID是標識符。爲了安全和美麗,我想成爲一個祕密身份證。 –