Created
December 16, 2010 15:43
-
-
Save 0liver/743540 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
public class LanguageSpecificFileRule : RegExRewriteRule | |
{ | |
private string _defaultLanguageIso2; | |
public override void Initialize(UrlRewritingNet.Configuration.RewriteSettings rewriteSettings) | |
{ | |
base.Initialize(rewriteSettings); | |
_defaultLanguageIso2 = rewriteSettings.GetAttribute("defaultLanguage", "de").ToLowerInvariant(); | |
if (Rewrite != RewriteOption.Domain) | |
throw new InvalidOperationException("RewriteOption must be Domain!"); | |
} | |
public override bool IsRewrite(string requestUrl) | |
{ | |
var isRewrite = base.IsRewrite(requestUrl); | |
return isRewrite; | |
} | |
public override string RewriteUrl(string url) | |
{ | |
var langIso2 = UriUtils.GetSubdomain(new Uri(url)); | |
var relativeUrl = new Uri(url).AbsolutePath; | |
var filePathWithLang = GetFilePathWithLang(relativeUrl, langIso2); | |
var filePathDefault = GetFilePathWithLang(relativeUrl, _defaultLanguageIso2); | |
var languageSpecificPath = GetLanguageSpecificPhysicalPath(filePathWithLang); | |
return File.Exists(languageSpecificPath) | |
? filePathWithLang | |
: filePathDefault; | |
} | |
private string GetFilePathWithLang(string url, string langIso2) | |
{ | |
var dotIndex = url.LastIndexOf('.'); | |
return url.Insert(dotIndex, "-" + langIso2); | |
} | |
private string GetLanguageSpecificPhysicalPath(string fileNameWithLang) | |
{ | |
return HttpContext.Current.Server.MapPath(fileNameWithLang); | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment