簡體   English   中英

子目錄URL自動重寫規則?

[英]Subdirectory URL Automatic Rewrite Rule?

我正在使用ASP.NET 4 / VB.NET / IIS來構建Web應用程序。 人們將通過如下網址訪問Web應用程序:

http://url.com/personname

因此,例如,以下分別是Jane Doe,John Doe和James Doe的網址:

http://url.com/janedoe

http://url.com/johndoe

http://url.com/jamesdoe

我需要以某種方式將它們傳遞(無論輸入什么名稱)到default.aspx頁,然后該頁將拉入URL的名稱部分,並使用它對包含信息的數據庫執行查找。 有關此特定人員的信息,並根據該信息顯示個性化頁面。

因此,例如Jane Doe訪問:

http://url.com/janedoe

透明地將她重定向到default.aspx,它會提取她的名字(來自上面的url),並對照數據庫進行檢查。 看到她從未訪問過該站點,她便被透明地重定向到welcome.aspx,要求她注冊一個帳戶,她說:“你好,簡! 等等...

下次Jane造訪時,她前往:

http://url.com/janedoe

透明地將她重定向到default.aspx,它會提取她的名字(來自上面的url),並對照數據庫進行檢查。 看到她以前曾經訪問過並創建了一個帳戶,就可以透明地將其重定向到login.aspx,要求她輸入上次創建的身份驗證憑據。

首先,您需要將請求重寫為Default.aspx。 這很簡單,具體取決於您的IIS版本(以下是IIS 7.5)。 在web.config中,規則(在system.webServer部分中)類似於

<rewrite>
    <rules>
        <rule name="test" enabled="true" stopProcessing="false">
            <match url="^([a-zA-Z]*)$" />
            <action type="Rewrite" url="Default.aspx?u={R:1}" />
        </rule>
    </rules>
</rewrite>

(或者您可以使用IIS管理器)。 當然,應將正則表達式[a-zA-Z]調整為適合您的業務規則-您可能希望允許數字。

這將在IIS中重寫請求-在瀏覽器中看不到任何內容。 現在,您要“透明重定向”它,這意味着瀏覽器中的URL應該根據用戶是否已經存在而更改。

為此,請在處理Request.QueryString [“ u”]的背后的Default.aspx代碼中執行以下操作

Response.Redirect("Welcome.aspx") or
Response.Redirect("Login.aspx")

取決於數據庫查詢結果。 如果您不想更改瀏覽器URL,請使用Server.Transfer而不是Response.Redirect。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM