URL重寫

URL重寫

URL重寫,URL重寫式會話跟蹤的最低公分母?,當客戶機不接受cookie時,server就使用URL重寫作為會話跟蹤的基本方式.URL重寫,添加了附加數據(會話ID)到請求的URL路徑上。

標準化

概述

URL標準化,英文:urlcanonicalization來自matt cutts的部落格文章:SEO advice: url canonicalization 中文翻譯:SEO的建議:URL標準化 “URL標準化”是一個動名詞,不好直接解釋,我把它反過來一下:

標準化URL

很多情況下,我們認為以下這幾個連結都指向同一個頁面(首頁):

但是從URL傳送請求並返回網頁內容的過程來看,這些URL都是互不相同的。對於上述URLs,Web伺服器完全可以返回完全不同的內容。當這些URL所對應的內容都一樣時(一般情況下都一樣的),谷歌需要從上述URLs中選一個具有代表性的,而忽略其餘的。那么這個被谷歌選擇了的URL,就是一個標準化的URL。谷歌選擇的這個過程稱為“標準化”。

​多種URL重寫規則

根據不同的伺服器就會有不同的URL重寫規則,比如 iis apache nginx 這三種重寫方式都是不同的,並非完全一樣的。

靜態化

概述

這是SEO過程中經常碰到的問題,也是必須解決的問題。因為搜尋引擎喜歡靜態頁面。從Web伺服器的角度,這個問題轉變為:如何將靜態化的檔案名稱稱轉化成參數。

需要兩步來處理

⒈把網頁上帶連結的地方,都換上新的靜態化連結。搜尋引擎和瀏覽器將通過該連結來發生請求。(有些人做修改不是在網頁上,而是進行動態連結向靜態連結的轉向,這是嚴重錯誤的)

⒉在httpd.conf或.htaccess中使用RewriteRule:

RewriteRule "^/dir/ ([^./]*) \.html" "/dir/script.cgi?doc=$1" [PT]

[PT]標記告訴Apache執行後續的所有操作。

通過這個功能,使動態頁面以靜態連結的形式展示給搜尋引擎,從而達到URL最佳化的目的。

好處

功能好處

重寫URL是非常有用的一個功能,因為它可以讓你提高搜尋引擎閱讀和索引你的網站的能力;而且在你改變了自己的網站結構後,無需要求用戶修改他們的書籤,無需其他網站修改它們的友情連結;它還可以提高你的網站的安全性;而且通常會讓你的網站更加便於使用和更專業。

重寫式跟蹤

當客戶機不接受cookie時,server就使用URL重寫作為會話跟蹤的基本方式.URL重寫,添加了附加數據(會話ID)到請求的URL路徑上.

會話ID必須被編碼作為該URL字元串中的路徑參數。該參數的名稱為jsessionid,

例如:

index.html;jsessionid=1234

優點

⒈縮短url,隱藏實際路徑提高安全性。

⒉易於用戶記憶和鍵入。

⒊易於被搜尋引擎收錄。

重定向

製作404頁面

很多時候,我們考慮把無效的URL比如:用戶拼錯的URL、不存在的URL重定向到別的網頁,例如網站的首頁、404頁面等。

在httpd.conf或.htaccess檔案中使用ErrorDocument來捕獲404 (找不到檔案)錯誤:

ErrorDocument 404 /index.html

DirectoryIndex index.html /path/to/notfound.html

本功能會讓所有的404錯誤——每次當某人請求無效的URL 時,都返回URL / index.html 提供的網站首頁。

注意事項

⒈直接指向首頁是否是合適的?或者讓它指向到一個404頁面會更好些?如果在404頁面用javascript做一個跳轉到首頁,也是SEO允許的做法。

⒉即使返回有效的檔案,仍然會將404 狀態碼返回給客戶端和搜尋引擎。這表示搜尋引擎機器人來確認網站上的連結時,仍然會得到正確的結果(404狀態碼)。

新建方法

操作方法

具體操作辦法(僅適用於apache網路伺服器):

檔案位置:apache->conf->httpd.conf

請在httpd.conf中使用Alias指令:

Alias /newurl/www/htdocs/oldurl

如:用戶訪問新的地址/newurl/id34.html 伺服器將提供的內容原地址是/www/htdocs/oldurl/id34.html。

注意:Alias只會改變本地URL,如/newurl/id34.html 的/newurl/id34.html 部分,而無法改變URL的主機名稱部分若要更改URL的主機名稱部分,請使用Redirect或RewriteRule指令。

菜鳥指南:本功能的Alias指令在 httpd.conf中是這一句:#Alias /webpath /full/filesystem/path 去掉前面的#,並做下相應的修改即可。

SEO用到功能

⒈當檔案移動或檔案目錄名稱發現改變,出於SEO需要,你需要保持舊的URL;

⒉網站改版了,網站導航和連結發生變化,為了繼續持有原連結帶來的流量,你需要保持舊的URL;

⒊你希望不同的人用不同URL來連結同一個的內容。(SEO一般不建議這樣做)

保留原連結,創建新的URL

操作方法

SEO過程中用到的功能

重定代碼

截獲請求代碼

⒈要重寫,首先是截獲url請求,然後分析當時的url,最後跳轉到相應的頁面.所以我們第一步是要截獲url請求.為此新建一個類庫叫URL,在該類庫中引用URLRewriter.dll.新建一個類myrewritter.cs,代碼如下

namespace URL

{

public class myrewritter : URLRewriter.BaseModuleRewriter

{

protected override void Rewrite(string requestedPath,HttpApplication app)

{

if (requestedPath.Contains("news/2011/3/2.html"))

app.Context.RewritePath("/news.aspx?id=2&year=2011&month=3");

else

app.Context.RewritePath("/here.aspx");

}

}

}

可以看到該類繼承了URLRewriter.BaseModuleRewriter。只要當前的url請求是news/2011/3/2.html,我們就會將頁面重寫到/news.aspx?id=2&year=2011&month=3.

這只是一個簡單的例子,實際上對於url的判斷,一般是用正則表達式來完成.而頁面和頁面間的對應關係,可能需要通過查詢資料庫完成.

web.config代碼

接下來在網站項目中引用這個類庫.然後修改下web.config,下面的:

步驟總結

大家可以看到我新加了個httpModules.這個的作用是,如果有url請求,asp/net會先把請求傳到你指定的這個類中來.add那一行了,前面的是要接收請求的類,後面的是這個類所在的dll的名字.

添加完這一句後,一切就快結束了.由於我們要處理的是.html的頁面,所以需要配置下iis.因為默認asp/net的處理引擎不會管.html.我們要做的是用處理asp .net的那個程式來處理html頁面.打開iis.找到你的網站,點右鍵打開屬性.找到主目錄(Home Directory),打開配置(Configuration)對話框. 在Application extensions列表里找到.aspx,點擊編輯(Edit...),複製Executable框的內容。

處理引擎

Apache

mod_rewrite,Apache 官方的 URL Rewriting 模組

mod_alias,Apache 1.3 的 URL 別名模組

Microsoft Internet Information Server(IIS)

URL Rewrite Module for IIS 7.0,由微軟官方發展

IIS Mod-Rewrite。

IISRewrite。

ISAPI_Rewrite。

URL Replacer。

Ionic's ISAPI Rewrite Filter (IIRF),無須 .NET,免費的開放原始碼組件。

.NET URL Rewriter and Reverse Proxy,免費的 URL Rewriting 與反向代理組件,支持 .NET 2.0/3.5,IIS 6.0/7.0。

2EEServlet

HttpRedirectFilter(開放原始碼)。

UrlRewriteFilter(開放原始碼-BSD)。

Lighttpd

mod_rewrite(lighttpd是一套開放原始碼的網頁伺服器)。

熱門詞條

聯絡我們