2008-11-03 56 views
3

我使用http://urlrewriter.net/來改寫我網站上的網址。例如,我重寫:如何確定一個asp.net url是否被「重寫」?

http://www.example.com/schedule.aspx?state=ca

http://www.example.com/california.aspx

我想要做的(搜索引擎優化的目的),以動態添加元標記:

<meta name="robots" content="noindex,follow" /> 

只有到未被重寫的頁面。這是因爲我希望這兩個URL都可以工作,但只有重寫的URL才能被搜索引擎編入索引。

如何確定已請求哪個版本的頁面?下面

編輯

答案建議301重定向,而不是使用元標記。也許我會這樣做,但我仍然想知道底層問題的答案......我怎麼知道頁面是否被重寫?

回答

2

個人而言,我會將301從未重寫的重定向到重寫的,並且只使用頁面的單個副本。這對用戶來說更容易,並且從SEO的角度來看,您有1份內容。

+0

這絕對是一種選擇,但我也想探索nofollow選項。 – Keltex 2008-11-03 16:56:51

2

如果你需要做到這一點,你也許可以這樣做:

<add header="X-WasRewritten" value="true" /> 

而且你可以檢查您的視圖頭,並添加機器人元標記,如果你需要它。

這也將返回到客戶端,所以如果你想隱藏你可以寫一個CustomAction(http://urlrewriter.net/index.php/support/reference/actions/custom-action),它會在你的請求中設置某種狀態值。

但是,對於相同的資源有兩個URI是我不推薦的。我建議你只保留一個表示。如果您擔心無效的舊書籤,您可以將舊的書籤設置爲重定向到新的書籤。

1

最明顯的方法是使用頁面中的Request.Url對象來獲取有關URL和查詢字符串的信息。例如:

if (Path.GetFileName(Request.Url.FilePath) == "schedule.aspx") 
    //Not rewritten 
else 
    //rewritten 
+0

我不確定這是否會與urlrewriting.net一起工作,因爲重寫會將url轉換爲應用程序使用的正常格式。 – 2008-11-03 16:33:55

0

我認爲這是HttpContext.Current.Items的工作。

您可以將「重定向」保存在HttpContext.Current.Items中,然後在您的頁面中,您可以檢查它是否有一定的附加值。

我相信你可以添加掛鉤到urlrewriter。網,可以做到這一點,一些alongs:

HttpContext.Current.Items["Redirected_From"] = currentUrlHere; 

然後在您的網頁,你可以通過檢查:

if (!string.IsNullOrEmpty(HttpContext.Current.Items["Redirected_From"])) 
    // the page's been redirected, do something! 
else 
    // no it's visited normally. 

我早已離開它在ASP.NET路由框架。 NET 3.5 SP1,它比urlrewriter.net IMO更好。

2

除了chakrit的回答,UrlRewriter.NET將原始URL存儲在HttpContext中,其名稱爲UrlRewriter.NET.RawUrl。所以,你可以嘗試這樣的:

bool isPageRewritten = 
    !string.IsNullOrEmpty(HttpContext.Current.Items["UrlRewriter.NET.RawUrl"]);