我尝试在 NopCommerce 中进行更改以在地址栏中包含语言我确实知道似乎有什么问题。
当我禁用 UrlRewriting 时一切正常,当我启用它时,当我使用默认语言时,当我转到另一种非默认语言时一切正常,我遇到了问题。
我有两部分代码用于默认语言和其他语言
我更改了一点代码,所以现在主要功能可以在语言之间进行选择:
public static string GetCategoryUrl(Category category, int languageId)
{
if (category == null)
throw new ArgumentNullException("category");
string seName = GetSEName(category.SEName);
if (String.IsNullOrEmpty(seName))
{
var categoryLocalized = CategoryManager.GetCategoryLocalizedByCategoryIdAndLanguageId(category.CategoryId, languageId);
if (categoryLocalized != null)
{
seName = GetSEName(categoryLocalized.Name);
}
else
{
seName = GetSEName(category.Name);
}
}
int defaultLanguage = Convert.ToInt32(SettingManager.GetSettingValue("Localization.DefaultLanguageID"));
string url = String.Empty;
string url2 = String.Empty;
//***for default language***
if (languageId == defaultLanguage)
{
url2 = SEOHelper.EnableUrlRewriting ? SettingManager.GetSettingValue("SEO.Category.UrlRewriteFormat") : "{0}Category.aspx?CategoryID={1}";
url = string.Format(url2, CommonHelper.GetStoreLocation(), category.CategoryId, seName);
}
//***for other languages***
else
{
url2 = SEOHelper.EnableUrlRewriting ? SettingManager.GetSettingValue("SEO.Category.UrlRewriteFormat2") : "{0}Category.aspx?Language={1}&CategoryID={2}";
url = string.Format(url2, CommonHelper.GetStoreLocation(), GetLocaleSubFolder(languageId), category.CategoryId, seName);
}
return url.ToLowerInvariant();
}
对于默认语言,我还有: 对于 SEO.Category.UrlRewriteFormat,我在数据库中有默认语言:{0}c{1}/{2}
在 UrlRewriting.config 中,我对默认语言有以下规则:
没有 url 重写我上面的链接看起来像 www.nopcomerce.com/category.aspx?categoryid=10
当我以默认语言进入类别时,我的链接看起来像 www.nopcomerce.com/c10/somecategory
对于其他语言:
对于 SEO.Category.UrlRewriteFormat2 我有其他语言的数据库:{0}{1}/c{2}/{3}
对于我拥有的其他语言
没有 url 重写为其他语言的链接看起来像 www.nopcomerce.com/category.aspx?language=de&categoryid=10
例如,当我用德语进入同一类别时,我将拥有 www.nopcomerce.com/de/c10/somecategorylocalizedingerman
现在我知道该页面可以正常工作,正如我之前所说,因为当我在 NopCommerce 中禁用 UrlRewriting 时,所有语言的所有页面都可以正常工作。我可以在类别、产品和整个门户之间更改语言,每种语言都没有问题。
但是当我启用 UrlRewriting 时,默认语言的类别链接工作正常(www.nopcomerce.com/c10/somecategory),但是当我点击其他语言的链接时,每次我点击任何链接,例如某个类别的链接在其他语言中,显示的内容来自默认页面(就像它在那里重定向我一样)但我看到我想以某种语言访问的链接写在地址栏中(www.nopcomerce.com/de/c10/ somecategorylocalizedingerman)。
我尝试了一切,但我确实知道问题出在哪里。怎么了?
我也尝试在 NopCommerce 论坛寻求帮助,但那里没有帮助。
你可以阅读我开始写的这个问题,直到这部分我现在不知道什么似乎是一个问题。
http://www.nopcommerce.com/boards/t/1039/seo-and-multilingual-pages.aspx?p=1
提前感谢您的每一个帮助。