我經常看到(重寫的)沒有ID的網址,就像一些WordPress的安裝。達到此目的的最佳方法是什麼? 例如: site.com/product/some-product-name/ 也許在緩存中保存頁面名稱和ID數組,以避免每個頁面請求上的數據庫查詢? 如何避免衝突,以及使用沒有ID的URL的其他問題?沒有ID的網址
沒有ID的網址
回答
使用一個ID提出了相同的難題,真的 - 你只是在數據庫中檢查一個不同的值。上述URL的「某些產品名稱」部分也是獨一無二的。有些人稱他們爲slu((Wordpress,也是永久鏈接)。因此,不是查詢具有特定ID的行的數據庫,而是查詢數據庫中具有特定段落的行。您不需要知道該ID即可檢索該記錄。
只要產品名稱是唯一的,它不應該是一個問題。只要該列被索引,就不會再需要(至少不重要)通過唯一名稱而不是數字ID來查找產品。
Wordpress在slug的wp_posts表中有一個字段。當你創建帖子時,它會在帖子標題中創建一個塊(如果這是你配置的方式),用破折號替換空格(或者我認爲你可以將它設置爲下劃線)。它也取出了撇號,逗號或者其他東西。我相信它也限制了slu overall的整體長度。
因此,簡而言之,它不會將URL動態解碼爲帖子的標題 - 表中有一個字段直接與帖子名稱的URL版本相匹配。
正如你可能會或可能不知道的,這些URL將被重寫爲Apache的mod_rewrite模塊。如此處所述,Wordpress在後臺爲消息標題或帖子名稱分配子彈。
但是,要回答您的問題,您要描述的是Wordpress的「Pretty Permalinks」功能,您可以在Wordpress codex中瞭解關於它的更多信息。較新版本的Wordpress在內部進行重新編寫(而不是.htaccess編輯,wp_rewrite)。這就是爲什麼你會看到任何永久鏈接結構的規則集。
雖然,如果你做一些挖掘,你可以找到舊的重寫規則。例如:
RewriteRule ^([0-9]{4})/([0-9]{1,2})/([0-9]{1,2})/?$ /index.php?year=$1&monthnum=$2&day=$3 [QSA,L]
將採取URL像/2008/01/01/
並將其引導至/index.php?year=2008&monthnum=01&day=01
(並加載日期類別)。
但是,如前所述,像product-name
一個頁面存在只有因爲WordPress的已經消毒的文章標題並將其存儲在數據庫中的字段。
- 1. Symfony的網址沒有app.php
- 2. 沒有「http | https」的網址
- 3. laravel Route有沒有網址?
- 4. Backbone.js的 - 網址:ID沒有獲得通過到循環
- 5. 帶有選定選項ID的網址
- 6. 引用具有多個ID的網址?
- 7. 刮似乎沒有網址的網頁
- 8. 如何刮沒有網頁的網址
- 9. 路由ID網址
- 10. Volley - 網址沒有迴應
- 11. href但沒有網址後?
- 12. 重寫網址後沒有ID以下文件夾?
- 13. Django:打印網址的視圖沒有硬編碼的網址
- 14. Facebook的開放ID網址?
- 15. Joomla網址:一篇文章本身沒有漂亮的網址?
- 16. 網址驗證 - 接受沒有協議的網址
- 17. htaccess的沒有找到我的網址
- 18. RESTful網址是否在對象之間沒有ID的情況下有效?
- 19. Regexing網址,有和沒有在PHP
- 20. 驗證沒有www的網址。或http://
- 21. 沒有端口的Socket.io網址
- 22. Asp.net mvc 3沒有參數的網址
- 23. 的HttpClient沒有到達網址
- 24. Asana如何處理沒有#的網址?
- 25. 沒有網址的Sencha Touch和Admob
- 26. 沒有定義的django網址
- 27. 與%的網址沒有得到api
- 28. Django沒有看到我的網址
- 29. 沒有用戶的SSH網址
- 30. 沒有模塊命名的網址
那麼,它會花費更長的時間,但它仍然足夠快,不在乎。 – 2017-11-24 21:12:40