コンテンツ言語の.htaccess

Apr 25 2020

すでに存在するサイトのコンテンツ言語を設定する方法を見つけようとしています。HTMLドキュメントを変更するためのアクセス権がありません。

ウェブサイトは2つの言語で設定されています。

メインドメイン(xxx.com)の第一言語はスペイン語です。すべてのHTMLドキュメントは、を使用してコンテンツ言語を適切に宣言し<html lang="es">ます。

第二言語は英語で、ドメインのサブディレクトリ(xxx.com/en/)にあります。コンテンツ言語は、どのHTMLドキュメントでも宣言されていません(ちょうど<html>)。どうやら開発者はそれが不要だと思っていたようですが、SEOテストで問題としてフラグが立てられています。

私はこれを修正する方法を見つけようとしています。.htaccessファイル(変更するためのアクセス権があります)を使用して、DefaultLanguageまたはで言語宣言をAddLanguage行うことができることがわかりました。しかし、検索でその影響を見つけることができません。

.htaccessDefaultLanguage en<IfModule mod_mime.c>セクションに追加すると:

  1. / en /サブディレクトリに言語属性がないという問題は修正されますか?

  2. メイン(スペイン語)ディレクトリのlang = "es"宣言は.htacess宣言を上書きするので、コンテンツ言語は正しいままですか?

アドバイスをいただければ幸いです。

回答

ÁlvaroGonzález Apr 26 2020 at 16:01

SEOは私の専門分野ではなく、バリデーターが何に満足するかはわかりませんが、純粋なプログラミング側からは、両方のディレクティブがContent-Language HTTPヘッダーを追加します。これは、問題に対処しますが、完全ではありません(強調鉱山):

たとえば、「Content-Language:de-DE」が設定されている場合、そのドキュメントはドイツ語を話す人を対象としていることを示します(ただし、ドキュメントがドイツ語で書かれていることを示すものではありません。たとえば、ドイツ語を話す人のための言語コースの一部としての英語。ドキュメントがどの言語で書かれているかを示したい場合は、代わりにlang属性を使用してください)。

さらに、AddLanguageはファイル拡張子と言語をマップします。それはあなたのユースケースと一致しません。ただし、DefaultLanguageを試して、バリデーターを再実行することはできます。スコープを設定する最も簡単な方法は、.htaccessファイルをenサブディレクトリ内に保存することです。

実際のHTMLを書き直すには、mod_substituteを試すことができます(もう一度、enサブディレクトリのコンテキストでのみ)。

# Untested (I have no idea of escaping rules)
Substitute "s/<html>/<html lang=\"en\">/ni"