2012-08-26 44 views

回答

3

你需要改變你的user.php採取的,而不是一個用戶ID用戶名。然後,你可以使用類似:

RewriteEngine On 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteRule ^/?([a-z0-9_-]+)/?$ /user.php?u=$1 [L] 

這通過u查詢字符串參數將用戶名,主要爲:/user.php?u=andrewliu

否則沒有辦法的htaccess和mod_rewrite的可以知道的映射是什麼USER_ID和用戶名之間。或者,你可以寫一個數據庫腳本,並使用RewriteMap爲你創建一個映射:

RewriteMap usermap prg:/path/to/userscript 

,並在您的htaccess:

RewriteEngine On 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteRule ^/?([a-z0-9_-]+)/?$ /user.php?u=${usermap:$1} [L] 

最後一個選項,如果你只得到了,也就是說, 5用戶(或少量),您可以進行明確的重寫:

RewriteEngine On 
RewriteRule ^/?andrewliu$ /user.php?u=1 [L] 
RewriteRule ^/?anotheruser$ /user.php?u=2 [L] 
RewriteRule ^/?foousername$ /user.php?u=3 [L] 
+0

太棒了!我只是將我的變量設置爲我的用戶名,並將其用於user.php。奇蹟般有效!謝謝! – hellomello

0

使用$ GET獲得的「U」

然後用你的邏輯將其轉換爲名稱的價值。

現在只需使用重定向功能,去到URL

3

您需要使用Mod-ReWrite。你可以在你的htaccess文件中使用它,但是如果你有權訪問你的httpd.conf文件,那麼它會更快。

您最好在您的htaccess文件中使用?u = 1,並使用它來查找名稱並將名稱追加到末尾。否則,你將不得不尋找用戶名和可能succesiptable到拼寫錯誤等等等等

RewriteRule ^/([0-9]+)/.*$ /user.php?u=$1 [L] 

這是#2是怎麼做的,嘗試在URL訪問該頁面沒有數,你會得到一個404頁未找到。獲得正確的數字,以及在正斜槓交換正確的單詞之後你還鍵入了什麼?這更加棘手!

+1

提及使用httpd.conf而不使用htaccess。爲了正確解釋這是因爲在單個請求中使用服務器資源讀取htaccess,而僅在服務啓動時讀取conf頁面! – youngcouple10