我想了解URL重寫的工作原理。我有以下鏈接。URL重寫查詢數據庫?
mysite.com/profile.php?id=23
我想用用戶名和姓氏重寫上述url。
mysite.com/directory/liam-gallagher
從我讀過,但是你指定的網址應該是什麼作爲輸出的規則,但我怎麼查詢我的表來獲取每個用戶名?
對不起,如果這很難理解,我迷惑了自己!
我想了解URL重寫的工作原理。我有以下鏈接。URL重寫查詢數據庫?
mysite.com/profile.php?id=23
我想用用戶名和姓氏重寫上述url。
mysite.com/directory/liam-gallagher
從我讀過,但是你指定的網址應該是什麼作爲輸出的規則,但我怎麼查詢我的表來獲取每個用戶名?
對不起,如果這很難理解,我迷惑了自己!
你從錯誤的方向看這個。你不能做那種自動的URL重寫。最好的是創建一個全面的網址重寫:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase/
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
並創建一個用戶的特定名稱的數據庫將被用作一個網址。
+---------+----------+------+-----------+----------------+
| user_id | username | name | surname | url |
+---------+----------+------+-----------+----------------+
| 23 | liam | Liam | Gallagher | liam-gallagher |
+---------+----------+------+-----------+----------------+
現在,當有人訪問你的http://mysite.com/directory/liam-gallagher
,你可以閱讀的最後一個條目,並找到你的數據庫和user_id
使你的腳本做休息。
另一種方法是建議使用Pekka。創建一個像http://mysite.com/directory/23/liam-gallagher
這樣的URL並從鏈接中讀取ID。但我個人不喜歡那種類型的網址。在我看來,它們只是快速/懶惰的解決方法。
喜歡的東西(只是一個草案,適應自己的需要...):
RewriteEngine On
RewriteRule ^([a-zA-Z]+)/([a-zA-Z]+)/([0-9]+)/([-0-9a-zA-Z]+)/?$ /$1/$2.php?id=$3 [L]
一種方法我用過的工作原理如下。
制定重寫規則,例如,
mysite.com/directory/(.*)
重定向到:
mysite.com/profile.php?user=%1
有1%作爲從規則中捕獲的參數。
然後從配置文件頁面上的查詢參數中抓取用戶,並從數據庫中獲取該用戶的ID。
您只需搜索名稱而不是ID。你能澄清你不確定的內容嗎? –
如果我搜索了該名稱,如果我有兩個同名的用戶呢? – Liam
@Liam你不應該!你需要爲每個人創建一個獨特的URL段落! –