我甚至不知道如何調用這個方法,我只知道我想要實現的行爲。如何使用目錄名稱作爲選項或參數?
我的例子是Facebook。如果你去facebook.com/[username or id]
你進入個人資料頁面,但我無法想象他們正在創建一個目錄在他們的根文件夾中,併爲每個用戶放置一個索引文件。
那麼如何完成以下行爲;你去somepage.com/foo/bar/hello
但實際上你要求somepage.com/foo?bar=hello
?
這甚至有可能與Apache和PHP?
我甚至不知道如何調用這個方法,我只知道我想要實現的行爲。如何使用目錄名稱作爲選項或參數?
我的例子是Facebook。如果你去facebook.com/[username or id]
你進入個人資料頁面,但我無法想象他們正在創建一個目錄在他們的根文件夾中,併爲每個用戶放置一個索引文件。
那麼如何完成以下行爲;你去somepage.com/foo/bar/hello
但實際上你要求somepage.com/foo?bar=hello
?
這甚至有可能與Apache和PHP?
我甚至不知道如何調用這個方法,我只知道我想要實現的行爲。
這個東西被稱爲URI/URL,它的本地部分被傳遞給一個web服務器。網絡服務器然後處理請求。
這甚至有可能與Apache和PHP?
是的。甚至沒有。這是一個Web服務器的用途。服務器上發生的事情完全由HTTP協議屏蔽,HTTP協議只知道URI/URL規範,該規範不規定是否需要與Web服務器上的具體進程或文件匹配。
例如,對於Apache HTTP Server,有一個名爲Mod_Rewrite的着名模塊進行URL重寫。通常,瀏覽器的用戶不會注意到這一點。
示例配置與PHP文件(apache httpd的):
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ app.php [QSA,L]
</IfModule>
在PHP腳本,你可以通過使用特殊變量像$_SERVER['REQUEST_URI']
and $_SERVER['QUERY_STRING']
獲得URI/URL。
通常這是用mod rewrite進行的。在那裏你可以製作一個腳本變量的「路徑」。
E.g. http://example.com/user/1/edit可以與國防部重寫被翻譯爲http://example.com/index.php?function=edit&userid=1
這樣的規則是這樣的:
RewriteEngine on
RewriteRule ^/user/([0-9]+)/([a-z]+)$ index.php=function=$2&userid=$1 [L]
第一行激活重寫模塊的第二行有一個正則表達式重寫URL必須匹配內部。如果你喜歡,你也可以使用外部與[L]
的[R]
修飾符instad。
看看整個documentation瞭解更多。
在breckets中的東西是所謂的旗幟也是well documentated。
我希望有幫助!
是的,看看Apache的'mod_rewrite'和'.htaccess'文件 – nickhar
這個東西叫做URL。即使它可以映射到目錄,它也不能。如何處理URL完全被收到的網絡服務器隱藏。在HTTP標準中沒有任何地方說它必須存在某種類型的目錄結構。 – hakre
http://tools.ietf.org/html/rfc3986和http://tools.ietf.org/html/rfc2616往往很好理解與URL重寫和與您的網絡服務器和網頁瀏覽器交互PHP腳本。 – hakre