![](/img/trans.png)
[英]Get base URL and anything past the .com part with both JavaScript and PHP
[英]Normalizing uri part given base url, with PHP
您無法僅通過檢查URL來解決此問題。
您說您需要給定基本URL和相對URL的絕對URL。 完整URL是基本URL和相對URL的串聯。 如您所見,知道這一點一點也沒有幫助。
http://example.com/directory/index.php
和http://example.com/directory/
可以合法地引用兩個不同的資源。
http://example.com/directory/index.php
和http://example.com/directory/foo/bar/baz.php
可以合法地引用同一最終資源。
在上面的第二個示例中,哪個是規范URL? 這不是必須通過計算確定的事情。 規范URL是您選擇作為規范URL的URL。
您實際上在這里面臨兩個問題:
1.兩個不同的URL何時引用同一資源?
無法通過以任何方式比較URL來確定。 這只能通過比較資源本身即內容和HTTP標頭來確定。
ETag - http://en.wikipedia.org/wiki/HTTP_ETag
簡而言之,ETag是一個HTTP標頭,對於資源而言是唯一的。 其目的是為了進行緩存驗證,即,我在緩存中擁有的內容是否與http://example.com/content中的內容相同?
至少來自同一主機的兩個相同資源將具有相同的ETag標頭值。 如果可能,請使用此選項(並非所有Web服務器都將返回ETag標頭)。
HTTP標頭和內容比較
什么時候兩個資源相同? 當內容類型和內容相同時。
使用Content-Type標頭比較內容類型。 比較內容本身是字符串比較的一種簡單情況。
如果您要存儲先前找到的資源的屬性並將它們與新發現的資源進行比較,則無需出於比較目的考慮該資源的全文-哈希即可。
就PHP而言, HTTP擴展將通過非常方便的OO API為您提供所需的全部內容,以檢查HTTP標頭和資源的全部內容。 md5()函數是用於生成唯一哈希的一種選項。 還有其他
2.規范URL是哪個URL?
選擇一個並堅持下去。 默認情況下,對於同一資源,一個URL不比另一個URL規范。 為簡單起見,您可能會認為兩個URL中最短的是規范形式。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.