可以說,我想去PHP 5可以處理類似於Tomcat或GAE的請求嗎?
http://example.com/something/a/few/directories/deep
是有辦法,我可以處理這個在PHP中,而不必讓那些目錄?我只想將域名後面的所有內容作爲變量並從那裏開始工作。
可以說,我想去PHP 5可以處理類似於Tomcat或GAE的請求嗎?
http://example.com/something/a/few/directories/deep
是有辦法,我可以處理這個在PHP中,而不必讓那些目錄?我只想將域名後面的所有內容作爲變量並從那裏開始工作。
這實際上不是一個PHP5相關的問題 - URL重寫是您的網絡服務器的一部分。
你可以,當你在Apache上使用mod_rewrite(不知道IIS,但可能有類似的東西)。
這樣做的最常見方法是使用mod_rewrite。 (有關於此的介紹,請致電http://articles.sitepoint.com/article/guide-url-rewriting)。這允許您在內部映射這些友好的URL以查詢傳遞給您的PHP腳本的參數。
你不需要需要mod_rewrite來處理這樣的場景。大多數流行的PHP框架目前都支持URI段解析。這是一個簡單的例子,仍然有一些安全漏洞被修補。
你可以通過採取全球$ _ SERVER變量之一,並分割它向前處理這個斜槓,像這樣:
if (!empty($_SERVER['REQUEST_URI'])) {
$segments = explode('/', $_SERVER['REQUEST_URI']);
}
的$段變量現在將包含段的數組遍歷。
當然。如果開始是恆定的或者只有幾個可能的值,則甚至不需要mod_rewrite
。創建一個名爲something
(無擴展名)的php文件並告訴Apache(通過SetHandler
或類似的指令)將其視爲PHP。然後,在腳本中檢查$_SERVER['PATH_INFO']
,該腳本將看起來像a/few/directories/deep
IIRC。不管你喜歡,你都可以用它來發送你的請求。
或者,正如Martin所說的那樣,使用簡單的mod_rewrite
規則將其重寫爲/dispatch.php/something/a/few/directories/deep
,然後在PATH_INFO
中有完整的路徑。
假設你使用的是Apache ...
添加重寫規則(在你的虛擬主機的conf或剛落,在您的文檔根.htaccess文件),指向一切的index.php。那麼你的index.php的內部,解析請求URI和提取路徑
RewriteEngine on
RewriteRule ^.*$ index.php [L,QSA]
的index.php:
$文件路徑= $ _SERVER [ 'REQUEST_URI'];
$ filepath = ltrim($ myname,'/'); //如果你想要的話可以帶上斜槓。
這是關於你想要的mod_rewrite規則的最大數量。 – staticsan 2009-10-27 23:53:34
你仍然需要mod_rewrite將所有調用重定向到奇異的PHP腳本;) – 2009-10-27 23:41:25
你需要mod_rewrite或其他一些機制將所有這些不同的請求映射到一個執行這種分割的php腳本(通常稱爲路由)。 – rojoca 2009-10-27 23:43:40
@Kent,kudos。我爲自己踢了一把。 – 2009-10-28 00:19:22