這是一個雙重問題:正確的答案將轉到「如何在PHP中執行」,解釋是否有任何優勢,如果可能的話也會計數。如何在PHP中進行URL重寫?
我只是好奇,因爲我真的不知道,我在網頁上看到很多。
編輯:我不知道的技術名稱,但例如在這裏#2: 「http://stackoverflow.com/posts/edit/522452
」是我的意思是「文件夾」(術語在問題的標題之前使用)。
這是一個雙重問題:正確的答案將轉到「如何在PHP中執行」,解釋是否有任何優勢,如果可能的話也會計數。如何在PHP中進行URL重寫?
我只是好奇,因爲我真的不知道,我在網頁上看到很多。
編輯:我不知道的技術名稱,但例如在這裏#2: 「http://stackoverflow.com/posts/edit/522452
」是我的意思是「文件夾」(術語在問題的標題之前使用)。
如果你指的是/posts/edit/522452
風格的網址,而不是/posts.asp?action=edit&postid=522452
風格的URL(或任何其轉換到後端),通常通過URL重寫器完成,例如mod_rewrite
。一種是URL規則可能是這樣的:
RewriteRule ^/posts/(\w+)/(\d+) /posts.asp?action=\1&postid=\2
兩個主要的優點這類網址是:
在PHP中,您可以通過$_GET['action']
和$_GET['postid']
訪問這些選項,就好像瀏覽器要求重寫表單一樣。
優點是可讀性和可能在搜索引擎更好的位置。
如果您使用的是Apache,則可以通過mod_rewrite
來實現此目的。在PHP中,您還可以查看預定義的全局變量 - 我認爲$_SERVER['REQUEST_URI']
有效,但可能會有更好的變化。
如果使用普通PHP而不重寫,也可以從腳本的文件名中刪除.php
,如果您正確配置服務器並因此仍然會獲得「好」的URL。
有幾個原因,但主要是:
引擎優化的目的。搜索引擎通常會忽略'?'後的任何內容問號標誌,因此給你留下無索引頁面,甚至更糟的是,根本沒有索引。
可讀性:
www.somesite.com/products/devices/keyboards/20,asc
www.somesite.com/products/devices/keyboards/20,asc.html
看起來優於:
www.somesite.com?show=products&cat=devices&sub_cat=keyboards&sort=asc&items=20
緩存。
有關如何做到這一點在Apache的信息: http://httpd.apache.org/docs/2.0/misc/rewriteguide.html
作爲SEO目的,緩存和可讀性的一部分,正如其他人已經指出的那樣,我想補充一點,文件夾式參數也是激勵用戶使用參數「玩」的動機。例如,在Stackoverflow中,當通過標籤進行過濾時,通常會手動編輯網址,而不是查找相應的按鈕並單擊它。
要使用這樣的網址,您需要做的三個步驟:
告訴你的網絡服務器,這些請求應該重定向到你的PHP腳本。與Apache,你可以使用mod_rewrite module這樣做:
RewriteEngine on RewriteCond %{REQUEST_FILENAME} !-f RewriteRule !^index\.php$ index.php [L]
該指令重定向每一個請求,但這並不在文件系統中一個文件匹配,以index.php
。
讓你的腳本來分析這些網址:
$_SERVER['REQUEST_URI_PATH'] = preg_replace('/\?.*/', '', $_SERVER['REQUEST_URI']); $segments = explode('/', trim($_SERVER['REQUEST_URI_PATH'], '/')); var_dump($segments);
這可能是解析URL路徑,並得到每個路段的最簡單方法。
在輸出中使用此URL。 (微不足道)
咦?你是什麼意思,「將論據作爲'文件夾'傳遞」? – Randolpho 2009-02-06 22:23:15