Содержание

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

🏠 | 💻 PC | Web |

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

Введение

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

Файл .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 andreyolegovich.ru.error.log

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

… script ‘/home/xxx/andreyolegovich.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

Похожие статьи:

🖽 Html
🖌 CSS
Joomla
UTM-метки
URLencode
Переадресация страниц сайта
Адаптивный дизайн сайтов
Настройка почтового ящика на Яндекс
Какой хостинг выбрать
Как перенести сайт
Яндекс Метрика
Разница между POST и PUT
Word Press
SEO
Тестирование сайта
A numeric character reference expanded to the C1 controls range.
JavaScript
.webp
Flask
Django
Как указать каноническую страницу сайта
  • Поиск по сайту
  • aofeed — Telegram канал чтобы следить за выходом новых статей
  • aofeedchat — задать вопрос в Телеграм-группе
Контакты и сотрудничество:
Рекомендую наш хостинг beget.ru
Пишите на [email protected] если Вы:
1. Хотите написать статью для нашего сайта или перевести статью на свой родной язык.
2. Хотите разместить на сайте рекламу, подходящуюю по тематике.
3. Реклама на моём сайте имеет максимальный уровень цензуры. Если Вы увидели рекламный блок недопустимый для просмотра детьми школьного возраста, вызывающий шок или вводящий в заблуждение — пожалуйста свяжитесь с нами по электронной почте
4. Нашли на сайте ошибку, неточности, баг и т.д. … …….
5. Статьи можно расшарить в соцсетях, нажав на иконку сети:

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

🏠 | 💻 PC | Web |

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
Как указать каноническую страницу сайта
  • Search on this website
  • aofeed — Telegram channel for updates
  • aofeedchat — Telegram group for questions
Share in social media:

apache2 — .htaccess перенаправить подпапки на соответствующий index.php

спросил

Изменено 1 год, 2 месяца назад

Просмотрено 5к раз

Как я могу перенаправить каждый запрос для подпапки на index. php в той же папке

 myserver.com/folder/subfolder1/test перенаправлен в папку/subfolder1/index.php
myserver.com/folder/subfolder2/test перенаправлен в папку/subfolder2/index.php
...
 9.*$ index.php [L,QSA]
 

Я хотел бы перенаправить их одним .htaccess в родительскую папку:

 Папка/
        .htaccess <-- здесь одно перенаправление
        подпапка1/
                index.php
        подпапка2/
                index.php
        подпапка3/
                index.php
          ...
        подпапка н/
                index.php
 

П.С. : все вложенные папки имеют разные имена и не соответствуют соглашению об именах.

  • .htaccess
  • apache2

Вам просто нужно убедиться, что DirectoryIndex правильно установлен в корневом файле .htaccess . (По умолчанию это index.html , хотя многие дистрибутивы также включают index.php , поэтому вам часто не нужно ничего делать!)

Например:

 DirectoryIndex index. php
 

Это указывает Apache (mod_dir) искать файл index.php в запрошенном каталоге (обратите внимание на относительный URL-путь), когда вы запрашиваете каталог напрямую. 9.*$ index.php [L,QSA]

Вам не нужно использовать mod_rewrite. На самом деле это правило тут все равно ничего не даст, так как 2-е условие явно исключает запросы к директориям.

Ссылка:

  • https://httpd.apache.org/docs/current/mod/mod_dir.html#directoryindex
 RewriteEngine включен
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule (.+)/.*$ $1/index.php [L, QSA]
 

Я нашел ответ, с этим правилом каждая папка перенаправляется на нее index.php, если файл не существует.

Зарегистрируйтесь или войдите в систему

Зарегистрируйтесь с помощью Google

Зарегистрироваться через Facebook

Зарегистрируйтесь, используя адрес электронной почты и пароль

Опубликовать как гость

Электронная почта

Обязательно, но не отображается

Опубликовать как гость

Электронная почта

Требуется, но не отображается

Нажимая «Опубликовать свой ответ», вы соглашаетесь с нашими условиями обслуживания и подтверждаете, что прочитали и поняли нашу политику конфиденциальности и кодекс поведения.

url-redirect · Темы GitHub · GitHub

Вот 24 публичных репозитория соответствует этой теме…

СироДиаз / laravel-перенаправление

Звезда 56

Андре-ст / chrome-injectjs

Звезда 27

БетаХун / cf-worker-перенаправление

Спонсор Звезда 19

яояо-лю / URL-перенаправление-ж

Звезда 10

SlickProxy / разработчик

Звезда 4

URL-фреймворк / URL-адреса

Звезда 4

нимешкверма / Отклонение

Звезда 4

Уильямбарджент / YOURLS-прямая косая черта в URL-адресах

Звезда 4

Эйджли2006 / укоротитель фляг

Звезда 2

МаморуДС / redir_page

Звезда 2

яояо-лю / URL-перенаправление

Звезда 1

RichKMLS / Старый-Reddit-Redirect

Звезда 1

Эммануэльдевс / Авель

Звезда 1

Хокинг / gcp-статический сайт

Звезда 1

Доминикбразилейро / идти обратного прокси

Звезда 1

p208p2002 / URL-адрес безопасности

Звезда 0

Морикава77 / swapqueryphp

Звезда 0

Satishcg12 / короткий URL-узел

Звезда 0

с-ол / перенаправить

Звезда 0

ивекивек / URL-перенаправление

Звезда 0

Улучшить эту страницу

Добавьте описание, изображение и ссылки на URL-перенаправление страницу темы, чтобы разработчикам было легче узнать о ней.