URLの先頭セグメントで言語バージョンを判断しないようにするには

samatsu 8/16/2015 2517 N/A Sitecore XP

Sitecore の標準の動作では、例えば次のようなURLがリクエストされた場合、英語バージョンのトップページが表示されます。

http://www.hostname.com/en

URLの先頭セグメントに言語バージョンを指定する文字列が見つかった場合、Sitecoreは自動的にリクエストされているコンテキスト言語を先頭セグメントで指定された言語に切り替えます。

URLの先頭に 言語バージョン がある場合のコンテキスト言語の切り替え処理は、 preprocessRequest パイプラインの StripLanguage プロセッサーで処理が行われています。

URLの先頭セグメントを使用して言語を判定してほしくないバイは、 StripLanguage パイプラインプロセッサーをカスタマイズすることで、より複雑なロジックでURLの先頭(第一セグメント)に言語バージョンが指定された場合に、特定の言語の場合のみ無視するなどの処理を実装できます。

多言語対応をしていないサイトの場合には、単純に URLの先頭セグメントに言語バージョンがあるかどうかを判断しないようにしたい場合は、より簡単で Web.config の以下の設定を既定のtrueからfalse変更することで対応できます。

      <!--  LANGUAGES ALWAYS STRIP LANGUAGE
            This setting specifies if the StripLanguage processor in the <preprocessRequest> pipeline will parse and remove languages from
            the URL, even when the languageEmbedding attribute of the linkProvider is set to "never". You should only change this setting 
            to "false" if the default behavior causes problems in your solution.
            Default value: true 
      -->
      <setting name="Languages.AlwaysStripLanguage" value="true"/>

Language.AlwaysStripLanguageの設定をデフォルトの true から false に変更すると、 StripLanguage プロセッサーでURL先頭セグメントに言語バージョンを表す文字列が埋め込まれているかどうかを判断する処理を無効化できます。