[英]How to mod_rewrite a number in url to a name
我有一個要在其中收集信息的數據庫,在這種情況下
user 1023 = madonna
我今天有一個網址是:
http://domain.com/welcome.php?p=user&xoxo=1023
我想改成這樣的網址
http://domain.com/user/madonna
嘗試使用此htaccess
在此之前,您應該備份原始的htaccess文件
RewriteEngine On
RewriteBase /
RewriteCond %{QUERY_STRING} ^xoxo=([0-9]*)$
RewriteRule ^(.*)$ http://domain.site/user/madonna [R=301,L]
對於任意數字映射(例如數據庫中定義的數字映射),無法完成此操作。 相反,在這種情況下,應用程序本身應處理名稱<-> ID /數字處理。
重寫(如果使用的話) 只能用於將/user/madonna
轉換為/welcome.php?user=madonna
; 同樣,“漂亮的URL”應由應用程序本身使用已經可用的用戶名生成。
tldr; 應用程序(不是mod_rewrite)負責與用戶名(即“ madonna”)和相應的用戶ID(即1023)進行轉換。
無論如何,一種稍微不同的方法是遵循StackOverflow對URL所做的操作。 它編碼ID 和 “友好”部分。
例如,“友好問題URL”是http//../questions/$id/$title
而URL的唯一相關部分是http://../questions/$id
因為標題部分與找到正確的問題。 同樣,我的個人資料是http://../users/2864740/user2864740
但是我的用戶名與處理查詢無關,並且http://../users/2864740
足以訪問我的個人資料。
注意:如果“友好”部分與ID引用的項目不匹配,則StackOverflow將立即重定向到正確的完全友好URL。 這對於減輕諸如用戶帳戶之類的欺騙行為尤其重要。 它還可以確保在更改標題/用戶名后傳播“正確的” URL。
在此問題的上下文中,這意味着該ID已經可用並且可以輕松轉換為查詢參數的漂亮URL為http://domain.com/user/1025/madonna
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.