2012-05-03 276 views
2

我一直在探索「漂亮」的網址,其中我所做的第一件事是刪除擴展名(例如.aspx)。爲此,我使用了IIS中的URL重寫模塊。刪除URL文件擴展名

這工作那麼現在,如果我訪問

http://www.mysite.com/folder/filename 

http://www.mysite.com/folder/filename.aspx 

後者被重定向到第一和加載頁面。我然後嘗試以下內容:

http://www.mysite.com/folder/filename/ 

其中斷(如預期的我想)但這似乎是不好的用戶體驗。也許作爲一個頻繁的網絡用戶,我覺得沒有斜線或斜線應該工作。我知道在結尾工作的唯一方法是創建一個文件夾並使用默認頁面default.aspx,如果可以的話,我想避免使用該頁面。

繼續,我嘗試添加一個與文件名稱相同的目錄,所以在上述示例中,我創建了一個名爲filename的目錄。在這個目錄中我創建了一個默認的default.aspx。現在,如果我嘗試訪問相同的網址http://www.mysite.com/folder/filename,我會將其發送到該新文件夾的default.aspx頁面,並在URL http://www.mysite.com/folder/filename/後附加一個斜線。

這表明,默認情況下,沒有擴展名的URL會嘗試訪問目錄,並且只有在IIS覆蓋未找到時纔會提供一個文件,因此從某種意義上來說,嘗試使用擴展名較少的文件名來欺騙它就好像是一種剽竊。

幸運的是,我完全控制了文件和文件夾名稱,所以我希望可以防止發生意外(儘管我必須小心)。所以我的問題是:是否有一種方法來刪除文件擴展名,但仍然允許追加斜線並仍然找到該文件。如果我可以幫忙的話,我不想在裏面創建大量的帶有default.aspx的目錄。

+0

你有一個自定義404處理頁面?如果是的話,使用它來執行重定向/傳輸到你想要的頁面。 –

+0

我確實有一個自定義的404頁面,我想我可以用它來重定向,難道沒有更好的方法嗎? – Chris

+0

這是我過去的做法。 –

回答

1

我不完全確定IIS如何處理mod_rewrite,但希望我在Linux環境中應用的邏輯將幫助您解決問題。

在我的.htaccess文件中,我首先寫出了兩個適用於以下規則的條件;它表示如果下面的url不是文件,並且不是目錄,則會將用戶重定向到下一頁。

但是,如果目錄或文件存在,將始終優先。

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d

RewriteRule ^news/([^/]*)$ news.php?article_slug=$1 [L,QSA]

規則允許您所需要的結構(文件夾/文件),或至少模擬它作爲一個URL。

所以上面的例子會指示

http://www.mysite.com/news/article-name & http://www.mysite.com/news/article-name/

新聞。PHP與GET變量article_slug

讓我知道,如果這有什麼幫助,或者如果我可以進一步幫助。

1

最簡單的方法是使用ASP.NET路由,我假定你所談論的Web表單,您例如它很容易:

  1. 添加System.Web.Routing參考項目
  2. 使用(使用System.Web.Routing;)在Global.asax.cs中路由
  3. 加入航線應用程序啓動:
protected void Application_Start(object sender, EventArgs e) 
{ 
    RouteTable.Routes.MapPageRoute("", "Filename", "~/Filename.aspx"); 
} 

就是這樣。

下面是有關路由爲Win形式獲得更多的信息:

http://msdn.microsoft.com/en-us/library/cc668201.aspx#adding_routes_to_a_web_forms_application

http://msdn.microsoft.com/en-us/library/dd329551.aspx

+1

好吧,這比解決方案更具攻擊性,因爲它使用了一套不同的工具來處理@Chris說的他正在使用的工具。它也依賴於該網站是一個.NET 3.5+網站。取決於結賬,編輯,簽入,審覈,合併,構建,測試和部署這種方式會產生多大的摩擦,這可能與要成爲一個簡單的「解決方案」相距甚遠, –

0

IIS重寫(正確)的URL匹配以斜線和不帶後綴斜線不同的URL。根據如何規則已經實施,您可能需要

  • 實現2個規則,一個人對付添加(或刪除)的全部或sepcific URL和其他尾隨斜線處理 重寫URL對。 aspx頁面。
  • 您可能需要添加單獨的地圖網址的使用和不使用 尾隨斜線

該解決方案實際上取決於你匹配在何處以及如何。