簡體   English   中英

如何將URL中的數字重寫為名稱

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM