Переезды через связку hreflang & canonical
Идея по упрощению переезда с морды на внутряк, через связку hreflang и canonical. Если не знаете что это такое, вот тут написано.
У меня в основном малостраничные сайты (зачастую просто 1 страница = морда) на статике. Когда начинал тестировать эту связку, было много лишних движений — скопировать исходный index.php, настроить чтобы копия корректно отображалась на нужном URL, в обоих файлах поддерживать идентичный контент, в случае правок и т.д. Одним словом — хлопотно
В итоге пришел к следующей схеме. Допустим, изначально в файле index.php было указан просто canonical на морду:
<link rel="canonical" href="https://site.ru/" />
И мне надо сделать «перенос» на директорию /ru-ru/
В этом случае всё в том же index.php заменяю изначальный canonical на:
<link rel="alternate" hreflang="ru-KZ" href="https://site.ru/" />
<link rel="alternate" hreflang="ru-RU" href="https://site.ru/ru-ru/" />
<link rel="canonical" href="https://site.ru/ru-ru/" />
Дальше вношу правки в .htaccess, чтобы при запросе /ru-ru/ было обращение к index.php:
RewriteRule ^ru-ru/$ /index.php [L]
Также по феншую надо бы менять в теге <html> указание языка, на морде:
<html lang="ru-KZ">
И на /ru-ru/ сделать:
<html lang="ru-RU">
Для этих целей использую php код:
<?php
$path = parse_url($_SERVER['REQUEST_URI'], PHP_URL_PATH);
if ($path === '/') {
echo '<html lang="ru-KZ">';
} elseif ($path === '/ru-ru/') {
echo '<html lang="ru-RU">';
} else {
echo '<html>';
}
?>
В итоге 2 страницы завязанные на 1 файл index.php в который удобно вносить правки.