2009-10-29 49 views
2

例如,我想有我報名,約和聯繫人頁面解析爲不同的內容,而是通過哈希標籤:以混編網址並將其發送到一個新的URL

三通每一個到報名,聯繫方式和有關頁面 -

  • www.site.com/index.php#about
  • www.site.com/index.php#registration
  • www.site.com/index.php #contact

是否有使用Javascript或PHP將這些頁面解析爲分隔內容的方法?

回答

5

哈希不發送到服務器,所以你只能用Javascript來做。

檢查值location.hash

-2

您可以使用PHP的全局$ _REQUEST變量搶請求的URL,並解析出井號標籤...

+2

錯了。散列標籤通常不會發送到服務器,而是由用戶代理處理。你可能會想到cgi參數,而不是散列(或片段標識符)。 – 2009-10-29 14:03:30

+0

將Hashtags發送到請求中的服務器。在公共社區中稱錯某人之前,請自行檢查。 – 2009-11-02 14:57:14

+0

我很抱歉讓你失望,但你錯了*:http://httpbin.org/get#wat請注意「url」說的是什麼。你在考慮GET參數:http://httpbin.org/get?hashtag=i-think-not--你說的是[$ _REQUEST](http://php.net/manual/en /reserved.variables.request.php)(在這種情況下簡單地委託給$ _GET)應該是一個明顯的線索。 – 2013-05-06 14:24:27

0

我想你可能有一個很好的理由,但我會問,你爲什麼會這麼做?它打破了人們廣泛理解的網址哈希應該如何工作的標準,它只是乞求與其他客戶端互操作的麻煩。

+2

這通常在Gmail等AJAX-y站點中完成,以允許用戶保留瀏覽器歷史記錄和書籤功能,儘管實際頁面URL永遠不會改變。 – ceejayoz 2009-10-29 14:09:37

+0

有趣的技術,我以前沒有聽說過。 – 2009-10-29 14:57:30

+0

對於搜索引擎優化,有時候可以減少某些頁面從站點架構角度強加的鏈接「足跡」。有了這些頁面,它們對搜索結果並沒有什麼幫助 - 它們更像是用戶的支持頁面,如果整合可以幫助強調其他內容/ URL ...... 有意義嗎? – Rninja 2009-10-29 19:50:37

2

沒有服務器端的方法來做到這一點。你可以使用AJAX,但這會打破非JavaScript用戶的網站。最好的辦法可能是使用服務器端內容URL(index.php?page=<page_id>)並使用JavaScript在本地重寫這些內容(至#<page_id>),並處理使用AJAX 然後加載的內容。這樣你就可以擁有你的JS-enabled設備的hash-URL,其他人仍然可以使用該站點。

但它需要一點冗餘,因爲您需要提供兩次相同的內容,一次通過AJAX包含,一次通過適當的佈局和一切通過PHP。

如果你只是爲了美觀的原因想要哈希URL,但不想依賴於JS,那麼你的運氣不好。 URL的語義反對你:片段ID不應該真正影響URL引用的內容,而僅僅是該內容中的片段。 AJAX網址正在改變這些語義,但如果不必這樣做,沒有什麼好的理由去做。

+0

這看起來不錯(也感謝Slaks)。我會給它一個旋轉,看看我得到了什麼。可能要測試一下 - 在任何javascripting中非常生鏽。 – Rninja 2009-10-29 19:52:32

相關問題