web-dev-qa-db-ja.com

URLから言語コードを削除する

多言語サイトで少し問題があります。 English を含む3.3.6 Joomlaインストールで、FaLangを使用して4言語(英語、スペイン語、フランス語、イタリア語)の翻訳を処理しています。 デフォルトサイト言語として設定します。

言語フィルターで "Remove URL Language Code" を有効にしました。 英語でサイトを表示すると、私のURLは次のようになります

www.example.com/company/contact.html

そして言語スイッチャーは他の言語を次のように表示します:

www.example.com/es/company/contact.html
www.example.com/fr/company/contact.html
www.example.com/it/company/contact.html

私の問題は、言語を他の3つに変更した場合、言語スイッチャーで英語のURLが次のようになることです。

www.example.com/en/company/contact.html

リンクをクリックすると、303で.../en/...から.../...にリダイレクトされます。

私の知る限り、これはJoomlaの意図ですが、英語のURLから/en/を削除して、私の言語のいずれかの言語でWebサイトを表示すると、英語のURLは次のようになります。

www.example.com/company/contact.html

私はFaLangの言語スイッチャーを使用していますが、Joomla独自の言語スイッチャー/翻訳システムでもこの「問題」を経験しています。

私はSEFコンポーネントを使用しておらず、これを解決できるものも見つけていません。Joomlaのコアルーティングで何かを変更する必要があると思いますが、悲しいかな、どこで、何をしているのかわかりません。

リクエストごとの.htaccess

RewriteRule ^en/(.*)$ http://www.example.com/$1 [R=301,L]
5
Epodax

私が知る限り、あなたが望むものは不可能です。/en /は、言語を変更したいことをJoomlaが認識できるようにするために必要です。なぜなら、www.example.com/company/contact.htmlを使用すると、Joomlaは言語Cookieを調べて、現在アクティブな言語にリダイレクトするからです。したがって、言語を変更するには、英語に切り替えることを明示的にJoomlaに指示する必要があります。英語がアクティブになると、リンクには/ en /がなくなります。

3
Bakual

現時点では、リクエストした内容は実行できません。この動作は非常に煩わしいので、これを変更するためにプルリクエストをJoomla開発者に送信します。

一方、リダイレクト機能を使用してページをリダイレクトできます。たとえば、ページhttx://yoursite.com/en/products.htmlがあるが、URL httx://yoursite.com/products.htmlを使用したい場合、リダイレクトを作成する必要があるとしましょう/products.htmlから/en/products.htmlへのリダイレクト拡張のURL。悪い点は、言語サフィックスを削除するすべてのURLに対してこれを実行する必要があるということです。

これもJoomlaが自動的に計算する必要があると思います。

0
spacebiker