.htaccess для языка содержимого

Я пытаюсь понять, как установить язык контента для уже существующего сайта. У меня нет доступа к изменению HTML-документов.

Сайт настроен на двух языках.

Основной язык в основном домене (xxx.com) — испанский. Все документы HTML объявляют язык содержимого соответствующим образом, используя <html lang="es">.

Дополнительный язык — английский, расположенный в подкаталоге домена (xxx.com/en/). Язык содержимого не объявлен ни в одном из документов HTML (только <html>). Очевидно, разработчик посчитал это ненужным, но при SEO-тестировании это было отмечено как проблема.

Я пытаюсь понять, как это исправить. Я обнаружил, что объявление языка с использованием DefaultLanguage или AddLanguage можно сделать в файле .htaccess (который у меня есть доступ для изменения). Но я не могу найти ответвлений в своих поисках.

Если я добавлю DefaultLanguage en в раздел <IfModule mod_mime.c> файла .htaccess:

  1. Решит ли это проблему отсутствия атрибута языка в подкаталоге /en/?

  2. Будет ли объявление lang="es" в основном (испанском) каталоге переопределять объявление .htacess, чтобы язык содержимого оставался правильным?

Любые советы приветствуются.


person gce    schedule 25.04.2020    source источник
comment
Привет, не могли бы вы объяснить систему, которую вы используете? Звучит нелогично, что у вас нет доступа к файлам HTML на сервере, но вы можете изменить файл .htaccess.   -  person Dennis van de Hoef    schedule 26.04.2020
comment
Извиняюсь. Я понимаю, что это звучит противоречиво. Мне просто не разрешено изменять исходные файлы HTML.   -  person gce    schedule 26.04.2020
comment
@gce — Тогда похоже, что твоя настоящая проблема не связана с программированием, а связана с бюрократией.   -  person Quentin    schedule 26.04.2020
comment
Возможно. Но что есть, то есть. Вот почему я ищу альтернативное решение.   -  person gce    schedule 26.04.2020


Ответы (1)


SEO не является моей областью знаний, и я не знаю, чем будет доволен ваш валидатор, но с точки зрения чистого программирования директивы, которые вы упоминаете, добавляют Content-Language, который решает вашу проблему, но не совсем (выделено мной):

Например, если задан "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"
person Álvaro González    schedule 26.04.2020
comment
Спасибо. Я прочитал ту же документацию и нашел ее немного запутанной. Из различных источников, с которыми я консультировался, у меня также сложилось впечатление, что директива .htaccess может переопределить спецификацию языка HTML в испанских документах. Вот почему я сомневаюсь, так как испанская версия на самом деле важнее английской (я в Мексике). - person gce; 26.04.2020
comment
Что вы имеете в виду под переопределением испанского? Я думал, вы имели в виду, что подкаталог en содержит документы на английском языке без атрибута language :-? - person Álvaro González; 26.04.2020
comment
Как я объяснил, в документах HTML в испанской версии указан единственный язык — lang="es". В документах английской версии не указан язык... который я пытаюсь исправить. Итак... если я укажу английский язык в качестве языка содержимого в файле .htaccess, будет ли он переопределять объявление испанского языка в HTML-документах? Это моя забота. - person gce; 26.04.2020
comment
Если вы сохраните файл .htaccess в подкаталоге en, это повлияет на каждый файл в нем. Если каталог содержит смешанные данные, вам понадобится способ отличить испанские файлы от английских. Файлы за пределами en, конечно же, останутся незатронутыми. - person Álvaro González; 26.04.2020
comment
Спасибо. Фактически два HTML-документа и все внутренние ресурсы домена независимы. Просто английский сайт находится в своем подкаталоге. Похоже, что второй файл .htaccess, применяемый только к этому подкаталогу, предотвратит любые проблемы, которые могут возникнуть, если объявление языка будет помещено в основной файл .htaccess. Ваша помощь приветствуется. - person gce; 27.04.2020