2010-07-13 43 views
1

可能重複:
retrieve the hash in the url with php?如何通過PHP獲取包含'#'的網址?

亞姆具有使用$_SERVER['HTTP_HOST']$_SERVER["REQUEST_URI"],以便獲得url方含書籤在其網址像

http://www.abc.com/page_url#bookmark

IAM頁但其gigvng網址只能達到 http://www.abc.com/page_url即它沒有給我書籤鏈接。

我如何獲取我的完整的URL('#'內容)在PHP?

編輯:

看到了我想要做的就是我想「/」在我的網址,即添加URL是http://www.abc.com/page_url#bookmark的話,我想它重定向到http://www.abc.com/page_url#bookmark/。當IM與$ _ SERVER [這樣做「REQUEST_URI」]其結果爲http://www.abc.com/page_url/#bookmark這是錯誤的。 現在PLZ告訴我該怎麼做?請求URL時

+0

關於你的編輯:你想要的最有可能是沒有意義的。請解釋您爲什麼要將'http:// www.abc.com/page_url#bookmark'轉發到'http:// www.abc.com/page_url#bookmark /'......無論如何,這隻能完成用Javascript;看到我的答案。 – Artefacto 2010-07-13 11:54:08

回答

6

大多數瀏覽器不發送#fragment,但在內部處理一下......所以PHP有這些信息

+1

是否有任何其他方式來獲取? – developer 2010-07-13 11:28:42

+2

@developer,不,不是因爲它沒有發送到服務器。 – 2010-07-13 11:29:29

+0

PHP只能與瀏覽器發送到服務器的請求一起工作。您可以略微不同地傳遞目標:http://www.abc.com/page_url?fragment=bookmark#bookmark,然後使用$ _GET ['fragment'] – 2010-07-13 11:30:45

3

瀏覽器無法訪問不發送該信息(稱爲Web服務器「片段」)在請求網頁時。事實上,它甚至可能根本不會提出請求(如果您點擊指向同一頁面的鏈接,而是點擊不同的片段)。

要做到這一點的唯一方法是使用Javascript。您可以使用self.document.location.hash獲取片段。然後你可以發出一個單獨的請求(例如ajax)來發送信息給服務器。

這將是有用的,例如,存儲統計信息,瞭解用戶在鏈接後登陸哪個部分,但是您可以根據片段更改服務器端呈現的頁面的樣式(當然,您可以使用javascript,將用戶重定向到另一個頁面或同一個頁面頁面在查詢字符串中傳遞片段,以便它可以以不同的方式渲染)。