NopCommerce に変更を加えて、アドレスバーに言語を含めようとしましたが、何が問題なのかわかりません。
UrlRewriting を無効にすると、すべて正常に動作し、有効にすると、デフォルトの言語を使用しているときに、デフォルトではない別の言語に移動するとすべて正常に動作し、問題が発生します。
デフォルト言語用と他の言語用の 2 つのコード部分があります
コードを少し変更したので、メイン関数は言語を選択するようになりました:
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
事前にご協力いただきありがとうございます。