🏠 | 💻 PC | Web |

Переадресация внутри сайта с помощью .htaccess

Contents
Introduction
Как сделать переадресацию
Как сделать несколько редиректов
Решение проблем

Introduction

Прежде, чем заниматься переадресацией, нужно выяснить тип сервера, на котором размещён Ваш сайт.

Файл .htaccess вносит изменения в работу сервера Apache

В Nginx похожой цели служит файл nginx.conf суть там та же, но синтаксис немного другой.

Простая постоянная переадресация 301

To перенестри страницу с одного адреса на другой на постоянной основе вносите в .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/c.php

А теперь нужно:

/new_dir/a.php
/new_dir/b.php
/new_dir/new_c.php

Для переадресации a.php и b.php достаточно создать правило

Redirect 301 /old_dir /new_dir

А вот чтобы правильно перенаправить с.php в new_c.php нужно мысленно представить, куда перенаправится старый с.php с учётом нашего редиректа Redirect 301 /old_dir /new_dir

Как вы наверное и сами догадались, перенаправится он из

/old_dir/c.php

в

/new_dir/c.php

И уже вот этот несуществующий /new_dir/c.php нам нужно перенаправить в

/new_dir/new_c.php

Поэтому правило будет выглядеть следующим образом

Redirect 301 /old_dir /new_dir Redirect 301 /new_dir/c.php /new_dir/new_c.php

Дебаг

Если у вас возникли какие-то проблемы с переадресацией, первое что советую сделать - зайти на хостинг и почтитать логи.

У хостинга Beget которым я пользуюсь, и вам могу порекомендовать - логи с ошибками доступа лежат в файле sitename.xx.error.log

Когда я хочу проверить, что не так - я логинюсь на хостинг по ssh захожу к себе в public_html и делаю

tail -n 100 aredel.com.error.log

Так я вижу последние 100 строк сегодняшнего лога. И если бы там было

… script '/home/xxx/aredel.com/public_html/new_dir/c.php' not found or unable to start, referer heihei.ru

Я бы понял, что не настроена переадресация со старого c.php на новый new_c.php и добавил бы строку

Redirect 301 /new_dir/c.php /new_dir/new_c.php

В .htaccess

Подробнее про работу с логами читайте в моей статье про тестирование

Также советую изучить команды Bash

Роботы:
207.46.13.56 bing

Related Articles:

🛠 Полезные советы
🖽 Html
🖌 CSS
Joomla
UTM-метки
URLencode
Переадресация страниц сайта
Адаптивный дизайн сайтов
Настройка почтового ящика на Яндекс
Какой хостинг выбрать
Как перенести сайт
Яндекс Метрика
Разница между POST и PUT
Word Press
SEO
Тестирование сайта
A numeric character reference expanded to the C1 controls range.
JavaScript
.webp
Flask
Django
Как указать каноническую страницу сайта
Share in social media: