2010-11-11 213 views
3

我構建了一個簡單的ASP.NET網站,其中包含一個菜單,其中包含鏈接到每個菜單項的所有頁面URL。當我點擊菜單項時,頁面URL出現在地址欄中,如「http://mywebsite/xyz/webform1.aspx」。我想隱藏這個網頁的網址,而不是像所有網頁上的「http:// mywebsite」一樣顯示網址。請讓我知道如何實現這一點。提前致謝。 如果這太複雜了,那麼是否可以顯示一個虛假的網址來代替每個網頁的實際網址?我不想在網址中顯示實際的網頁名稱。在ASP.NET網站中隱藏頁面URL

+1

**不要** – SLaks 2010-11-11 15:51:47

+0

您確實意識到,在這一點上,您幾乎打破了任何用戶爲您的網站中的書籤添加書籤的能力....但那可能是rquirement。 – 2010-11-11 16:11:01

+0

人們如何在您的網站上書籤頁?這確實會破壞它們的可用性,再加上搜索引擎機器人最多會感到困惑,最壞的情況是將其視爲隱藏。看看獲得好/合理的文件夾/路徑,你的用戶會感謝你。 – Meff 2010-11-11 16:21:27

回答

2

我在ASP.NET 3.5 SP1中使用名爲「URL路由」的技術在此鏈接中找到了解決方案。我使用ASP.NET 3.5和IIS6。我的主要目的是隱藏實際的網頁網址(我應該在我的問題中明確指出),這可以通過使用此技術顯示友好的網址來實現。這篇文章有幫助。感謝大家的迅速回復,並建議其他方式來實現這一目標。

http://www.4guysfromrolla.com/articles/051309-1.aspx

+0

現在這是一個非常普通和合理的設計選擇。路由是使ASP.NET MVC儘可能好的關鍵組件之一。 – 2010-11-11 20:36:23

+0

謝謝。我的網站是使用webforms框架而不是MVC構建的。但在兩種情況下都可以使用路由。 – RKP 2010-11-12 11:50:04

3

您可以合理實現此目的的唯一方法是使用通常所說的「URL僞裝」,通過使用框架集或iframe來包裝頁面,以便所有操作都在框架內發生而不更改瀏覽器URL。

以不合理的方式實現這一點,您需要編寫一個自定義視圖引擎(如果您認真對待這個問題,我會建議使用MVC),因爲它會綁定到用戶上存儲頁面的「url」。在您的視圖引擎中,您可以通過interogate會話來確定用戶所處的位置,以顯示應呈現的物理頁面。

之後,您將需要實現您自己的所有Redirect/RedirecToAction功能,因爲您不再使用真正的重定向,而是在會話內部具有類似RedirectLocation的變量。

要做到這一點將是一個相當大的任務,我會建議不要這樣做。如果你絕對覺得你需要單一的URL與隱藏的方法。或者@Slaks評論說,根本就不要這樣做。

1

把你的網站放在iframe中,例如你在www.mysite.com上有index.html,在index.html中你有一個包含實際網站的iframe,這樣當用戶瀏覽網站上的網頁時,他們將始終看到「www.mysite.com」

1

不知道你爲什麼會想這樣做......但一個簡單的方法來做到這一點,這是

創建具有的OnClientClick事件設置爲一個JavaScript函數的鏈接按鈕:

<asp:LinkButton ID="myButton" OnClientClick="go();" runat="server" Text ="Go somewhere"/> 

Next add a javascript function to go where you want to redirect: 

    <script type="text/javascript"> 
     function go() { 
      window.location = "http://www.google.com/"; 
     } 
    </script> 

它會隱藏網址 - 您只會在瀏覽器中看到一個JavaScript調用,並且頁面將會到達您想要的位置!當然,這是更多的工作......但它的工作原理...

0

嘗試使用Server.Transfer,創建一個頁面,充當網關,並通過URL傳遞。 它應該很容易實現。

0

您可以使用URL重寫通過的web.config和全球URL隱藏地址。asmx文件中的Application_BeginRequest事件並獲取url並將其重寫爲 HttpApplication app = sender as HttpApplication

app.Context.RewritePath(Path,true);