チュートリアルに従って、新しい Django-CMS (2.4) サイトを作成しました。私は単一の言語 (英語) のみを使用しています。
サイトの URL に言語識別子「/en/」を含めるための自動リダイレクトがあります。どうすれば削除できますか?
ありがとう。
チュートリアルに従って、新しい Django-CMS (2.4) サイトを作成しました。私は単一の言語 (英語) のみを使用しています。
サイトの URL に言語識別子「/en/」を含めるための自動リダイレクトがあります。どうすれば削除できますか?
ありがとう。
オプション1:
設定ファイルでUSE_I18N = Falseを設定します。
Django の国際化フックはデフォルトでオンになっています... 国際化を使用しない場合は、設定ファイルで USE_I18N = False を 2 秒かけて設定する必要があります。[Django ドキュメント:翻訳]
国際化は Django から「継承」されています。Django-cms 2.4 は、国際化と USE_I18N フラグの使用をサポートする Django 1.5 を使用します。このフラグは、以降のすべての django リリースで使用されています。
オプション 2:
このパターン登録を置き換えます。
urlpatterns = i18n_patterns('',
url(r'^admin/', include(admin.site.urls)),
url(r'^', include('cms.urls')),
)
これとともに:
from django.conf.urls import patterns
urlpatterns = patterns('',
url(r'^admin/', include(admin.site.urls)),
url(r'^', include('cms.urls')),
)
あなたが指摘したチュートリアルでは、i18n_patterns
まさにこれを行う方法を使用しています。言語コードをURLに追加します。
また、複数の言語を使用しない場合は、MIDDLEWARE_CLASSES から 'django.middleware.locale.LocaleMiddleware' と 'cms.middleware.language.LanguageCookieMiddleware' を安全に削除できることにも注意してください。
URL に 1 つの言語を残したい場合 (たとえば、Web に言語コードを含むバックリンクがある場合)、settings.py で他の言語を削除するだけです。
LANGUAGES = (
#('en', gettext('en')),
('de', gettext('de')),
)
CMS_LANGUAGES = {
'default': {
'public': True,
'hide_untranslated': False,
'redirect_on_fallback': True,
},
1: [
{
'public': True,
'code': 'de',
'hide_untranslated': False,
'name': gettext('de'),
'redirect_on_fallback': True,
},
# {
# 'public': True,
# 'code': 'en',
# 'hide_untranslated': False,
# 'name': gettext('en'),
# 'fallbacks': ['de'],
# 'redirect_on_fallback': True,
# },
],
}
そうすれば、URL は引き続き表示されますwww.example.com/de/foo.html
。上記の例で/de/
は、それが失われ、Web 内のすべての URL が無意味になります。
したがって、SEO の観点からは、言語コードを含むリンクを既に作成している場合、最適なオプションではない可能性があります。