Hejsa
Nu vil jeg lave alle links om til at være SEO-friendly. Altså således at jeg sikrer at alle links får "/" til sidst, og at "/Index" fjernes fra mine links også.
Nogle gode råd eller foreslag til hvordan jeg gør det bedst?
Er det bedst at lave en wrapper-metode der selv kalder url.Action(Controller, Action) til en streng, for derefter at se om den ender på "Index" eller "Index/" og fjerne dette, og til sidst se om jeg skal tilføje "/"?
Første løsning blev:
- public static string ToFriendlyURL(string urlToEncode)
- {
- StringBuilder url = new StringBuilder(urlToEncode.Trim());
- //Fjern "/Index" og "Index" til sidst
- if (url.ToString().ToLower().EndsWith("index/") || url.ToString().ToLower().EndsWith("index"))
- {
- //Check for "/index"
- int indexOfText = url.ToString().ToLower().IndexOf("index/");
- if (indexOfText >= 0)
- url = url.Remove(indexOfText, (url.Length-indexOfText));
-
- //Check for "index"
- indexOfText = url.ToString().ToLower().IndexOf("index");
- if (indexOfText >= 0)
- url = url.Remove(indexOfText, (url.Length-indexOfText));
-
- }
-
- if (!url.ToString().EndsWith("/"))
- url.Append("/");
-
- //Replace illegal characters
- url = url.Replace("C#", "CSHARP");
- url = url.Replace("c#", "csharp");
- url = url.Replace("#", "-");
- url = url.Replace("&", "-");
- url = url.Replace(".", "-"); //er "." dårligt for SEO fordi den tror det bliver extension?
- url = url.Replace(" ", "-");
-
- return url.ToString();
- }
Som så kan kaldes således
- .ToFriendlyURL(Url.Action("ActionHere", "ControllerHere"))
Så må vi se om det kan hjælpe når det kommer på produktionsserveren senere.
Indlæg senest redigeret d. 20.12.2012 17:31 af Bruger #17215