2010-05-06 17 views
5

我想是這樣的:獲得來自URL的用戶名在PHP

http://www.someniceandreliableurl.com/username 

,趕上用戶名。

我要讓像嘰嘰喳喳/ Facebook的的/ etc快捷網址...

twitter.com/username 

我怎樣才能讓這樣的事情用PHP? =)提前謝謝你。

+0

不知道,但你也許可以在目錄中只使用一個文件使用該名稱,並有#!\ locationToPHPhere在文件假設你使用Linux環境的頂部。這可能會導致shell將其視爲一個php文件,在這一點上,您可以隨心所欲地執行任何操作。 – 2010-05-06 20:31:37

+0

@Josh - 這將趨向,如果你有任何像樣規模的用戶羣 – 2010-05-06 20:34:06

+0

所有三個答案假設你在Apache下運行PHP失敗。是這樣嗎? – Dolph 2010-05-06 20:38:48

回答

8

使用mod_rewrite的的.htaccess文件

RewriteEngine on 
RewriteOptions MaxRedirects=1 
RewriteCond %{REQUEST_FILENAME} -f [NC,OR] 
RewriteCond %{REQUEST_FILENAME} -d [NC] 
RewriteRule .* - [L] 
RewriteRule ^(.*)$ /foo.php/$1 [QSA,L] 

foo.php是您展示快速鏈接頁面腳本。

然後在foo.php(或任何你命名它)你可以在$_SERVER['PATH_INFO']捕獲用戶名。

前5行打開mod_rewrite並允許重寫規則忽略實際的文件/文件夾/腳本。最後一個重寫所有不是罰款/文件夾/腳本的URL。

+0

+1以獲得清晰的描述。 – 2010-05-06 20:42:15

+0

謝謝,它有很大的幫助。 – pojomx 2010-05-06 20:49:58

+0

謝謝,剛剛添加: mod重寫,應該是ON(LoadModule rewrite_module modules/mod_rewrite.so,httpd.conf) – pojomx 2010-05-07 17:01:47

6

你可以使用一個重寫規則中的Apache變換site.com/user是site.com/loadpage.php?user=user

RewriteEngine On 
RewriteRule ^/([a-z0-9]+) /load_user.php?user=$1 [NC,L,QSA] 
+0

感謝您的幫助,即時通訊測試(我必須等待),但它有很大的幫助。 – pojomx 2010-05-06 20:49:04

1

你要問web服務器到URL重寫的查詢字符串,你可以從PHP訪問數據。做你的PHP腳本的URL工作像

http://www.someniceandreliableurl.com/?user=username 

然後確定Apache安裝的mod_rewrite和你被允許使用的.htaccess。然後創建一個帶有重寫規則的.htaccess文件,如

RewriteEngine On 
RewriteRule ^/(.*)$ /?user=$1 [QSA] 
+0

爲什麼downvote? – 2010-05-06 20:43:18

+2

@Joshua:不是一個理由,downvote,國際海事組織。無論如何,答案自然會在列表的底部,因爲另外兩個答案在這裏首先得到了一個開始。這仍然是一個有效的答案;不需要懲罰@Johan是一個打字速度較慢的打字員。 – 2010-05-06 20:49:04

0

簽出modrewrite在Apache中或使用提供路由的php框架。這通常是基於$ENV['PHP_SELF']變量,它可以讓你在你的PHP代碼,你通常會在ModRewrite做做更多的工作。它會在主機名後返回url的一部分,所以你可以做像http://exmaple.com/index.php/username/profile這樣的網址。