Блог

Перенос сайта: переадресация со старых урл на новые

Перенос сайта: переадресация со старых урл на новые

Данный метод поможет в случае, когда сайт перенесен на новый домен с частичным/полным изменением адресов страниц. Для начала создадим в корне папки старого сайта файл index.php.

<?php

define('DOMAIN_TO', 'https://gtxtymt.xyz'); // Домен нового сайта с протоколом
define('CODE', 301); // Код ответа сервера

$currentUri = parse_url($_SERVER['REQUEST_URI'], PHP_URL_PATH)); // Текущий URI 
$matches = [
	'/blog' => '/items',
	'/blog/entry1' => '/items/lorem-ipsum'
];

$redirectTo = array_key_exists($currentUri, $matches) ? $mathes[$currentUri] : $_SERVER['REQUEST_URI'];

header('Location: '.DOMAIN_TO.$redirectTo, true, CODE);

Укажем DOMAIN_TO со значением, равным адресу нового сайта с указанием протокола. В CODE находится код ответа сервера, по-умолчанию равный 301 - у страницы новый адрес на постоянной основе.

Заменим или добавим в массив $matches новые адреса, ключи которых равны текущим адресам, например

'/blog/entry2' => '/items/hello-world'

 ...где /blog/entry2 - старый путь до страницы, /items/hello-world - новый путь. При нахождении совпадений переадресация произойдет на указанный новый адрес, иначе - на сайт с полным исходным URI.

Скрипт будет проверять входящий URI без учета GET-тегов. Для того, чтобы происходила проверка на совпадения всей строки, замените

parse_url($_SERVER['REQUEST_URI'], PHP_URL_PATH)

на

$_SERVER['REQUEST_URI']

Наконец, если в качестве веб-сервера используется Apache, для корректной работы создайте файл .htaccess:

Options -MultiViews

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [L]
Комментариев: 0