Переадресация внутри сайта с помощью .htaccess
Введение | |
Как сделать переадресацию | |
Как сделать несколько редиректов | |
Решение проблем |
Введение
Прежде, чем заниматься переадресацией, нужно выяснить тип сервера, на котором
размещён Ваш сайт.
Файл .htaccess вносит изменения в работу сервера Apache
В Nginx похожой цели служит файл
nginx.conf суть там та же, но синтаксис немного другой.
Простая постоянная переадресация 301
Чтобы перенестри страницу с одного адреса на другой на постоянной основе вносите в .htaccess следующие изменения:
RewriteEngine on
Redirect 301 old_url http://адрес_новой_страницы
Где old_url это адрес_старой_страницы_относительно_корня_сайта
Если ваш сервер это Apache, a файла
.htaccess у Вас нет,
можете создать его самостоятельно и поместить, например,
в корневую директорию.
Пример
RewriteEngine on
Redirect 301 /old_dir/url1.php /new_dir/url1.php
Redirect 301 /old_url1.php /new_url.php
Redirect 301 /old_url2.php /new_dir/new_url.php
Можно сделать переадресацию целой директории
RewriteEngine on
Redirect 301 /old_dir /new_dir
Два редиректа
Если вы делаете два редиректа, которые влияют на какую-то страницу, например перенаправляете целую директорию, и ещё дополнительно что-то меняете внутри - нужно делать это аккуратно
Допустим было:
/old_dir/a.php
/old_dir/b.php
/old_dir/page.php
А теперь нужно:
/new_dir/a.php
/new_dir/b.php
/new_dir/new_page.php
Для переадресации a.php и b.php достаточно создать правило
Redirect 301 /old_dir /new_dir
А вот чтобы правильно перенаправить
с.php в new_page.php
нужно мысленно представить, куда перенаправится старый
с.php
с учётом нашего редиректа Redirect 301 /old_dir /new_dir
Как вы наверное и сами догадались, перенаправится он из
/old_dir/page.php
в
/new_dir/page.php
И уже вот этот несуществующий
/new_dir/page.php
нам нужно перенаправить в
/new_dir/new_page.php
Поэтому правило будет выглядеть следующим образом
Redirect 301 /old_dir /new_dir
Redirect 301 /new_dir/page.php /new_dir/new_page.php
Дебаг
Если у вас возникли какие-то проблемы с переадресацией, первое что
советую сделать - зайти на хостинг и почтитать логи.
У хостинга
Beget
которым я пользуюсь, и вам могу порекомендовать - логи с ошибками
доступа лежат в файле
sitename.xx.error.log
Когда я хочу проверить, что не так - я логинюсь на хостинг по
ssh
захожу к себе в public_html и делаю
tail -n 100 eth1.ru.error.log
Так я вижу последние 100 строк сегодняшнего лога. И если бы там было
… script '/home/xxx/eth1.ru/public_html/new_dir/page.php' not found or unable to start, referer heihei.ru
Я бы понял, что не настроена переадресация со старого page.php на новый new_page.php и добавил бы строку
Redirect 301 /new_dir/page.php /new_dir/new_page.php
В .htaccess
Подробнее про работу с логами читайте
в моей статье про тестирование
Также советую изучить команды
Bash
Роботы:
207.46.13.56 bing
Похожие статьи: