2017-07-14 29 views
0

我有一個ASP.net MVC 5網站。主頁在http://mydomain刪除「首頁/索引」的主頁路徑

不過,也到主頁第二條途徑 - http://mydomain/home/index - 我認爲

這會導致問題,因爲它可能被視爲重複的內容,圖像此頁面上打破。

我該如何完全刪除這條路線(所以它會轉到404,我猜?)。

我搜索了谷歌,但只能找到關於完全從路線中刪除首頁的文章 - 而不是我所需要的。

我使用屬性的路由,這是所有的在RouteConfig.cs:

routes.IgnoreRoute("{resource}.axd/{*pathInfo}"); 

// Enable Route Attributes in Controllers 
routes.MapMvcAttributeRoutes(); 

// Fall through all routes 
routes.MapRoute(
    name: "Default", 
    url: "{controller}/{action}/{id}", 
    defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional } 
); 

的主頁索引行動上有沒有屬性的路由(如你可能期望?)。這個/ home/index路徑即使在新生成的MVC項目上也可以工作 - 我認爲這是一個壞主意?

我該怎麼做?

移除這條路線有沒有問題,我可能沒有考慮過?

thx。

+1

然後刪除'routes.MapRoute'行,這就是設置路由。 – DavidG

+0

重複的內容不是一個問題,如果你的意思是在SEO的背景下。這個問題是通過使用「規範網址」來解決的:https://yoast.com/rel-canonical/ – Jeroen

+0

我的意思是SEO - 我的意思只是爲了我自己的理智 - 我看到了破碎的圖像,並花了我10分鐘找出原因。也讓我翻轉 - 禁用/ home/index有什麼危害? – niico

回答

0

這不是必需的。

默認路由提供可選控制器和操作名稱。因此,如果用戶沒有爲路徑中的控制器和/或動作放置任何名稱(/ home/index或/ home),asp.net將在應用程序路由中放入正確的值。

無論您何時使用Url.ActionUrl.Route函數,它都會爲您生成最短鏈接所以在你的網站上總會有http://mydomain爲你的根生產。例如,類別>索引操作,它將生成http://mydomain/category

在您的網站機器人將永遠不會重複的內容,如果你的鏈接是這樣的。如果您正在手動編寫鏈接,請儘可能縮短編寫或僅使用Url.Action

關於圖像必須有不同的東西,因爲圖像是靜態文件。只需使用「〜/ imagefolder/imagename.jpg」的方式來獲取它們。 「」對於從應用程序根目錄開始鏈接非常重要,如果您正在使您的應用程序在IIS中的子文件夾上工作。

+0

我看到了破碎的圖像,並花了10分鐘找出原因,這是因爲我在/ home/index(我不確定我是如何到達那裏的)。讓我翻轉 - 禁用/ home/index有什麼危害?我沒有看到它存在的好處?! – niico

+0

關於圖像 - 它們從頁面內的CSS鏈接 - 所以〜不起作用。 – niico

2

您可以使用IgnoreRoute()來阻止您不想要的非預期路線。

routes.IgnoreRoute("{resource}.axd/{*pathInfo}"); 

routes.IgnoreRoute("Home"); 
routes.IgnoreRoute("Home/Index"); 

// Enable Route Attributes in Controllers 
routes.MapMvcAttributeRoutes(); 

// Fall through all routes 
routes.MapRoute(
    name: "Default", 
    url: "{controller}/{action}/{id}", 
    defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional } 
); 

但是,如果這些URL已經在野外,您應該設置一個301重定向到您想要的規範URL。最簡單的方法是使用URL rewrite module

這個/ home/index路徑即使在新生成的MVC項目上也能工作 - 我認爲這是一個壞主意?

我認爲這更多的是變相的祝福。與任何使用MVC的SEO競爭者相比,這是一個優勢,當你是那個人的時候,他不會做額外的工作來刪除這些路線。

+0

謝謝 - 不是在野外,我仍然需要/ home/otherstuff - 所以我想我只需要routes.IgnoreRoute(「Home/Index」); – niico