Содержание
Перенаправление Apache и Nginx | FirstVDS
Перенаправления (редиректы) используются в тех случаях, когда вам необходимо, чтобы перенаправить пользователи сайта на нужный адрес.
В данной статье расскажем, как настраивать перенаправления в Apache и Nginx — одних из самых популярных веб-серверов в мире.
- Apache
- Подключения модуля mod_rewrite
- Правила Redirect
- Redirect или RedirectPermanent
- RedirectMatch
- RewriteRule
- Редирект с одного сайта на другой
- Редирект с www на без www
- Редирект с без www на www
- Перенаправление домена с https на http
- Перенаправление домена с http на https
- Nginx
- Редирект 301 с www.domain.com на domain.com
- Редирект 301 с domain.com на www.domain.com
- Редирект 301 с https на http
- Редирект 301 с http на https
Apache
Подключения модуля mod_rewrite
Для включения перенаправления средствами Apache достаточно, чтобы модуль mod_rewrite. so был загружен в Apache.
Для ОС Ubuntu, Debian:
LoadModule rewrite_module /usr/lib/apache2/modules/mod_rewrite.so
Для ОС CentOS, RedHat, AlmaLinux нужно проверить, чтобы в файле /etc/httpd/conf.modules.d/00-base.conf
была строка:
LoadModule rewrite_module modules/mod_rewrite.so
Если ее нет, то нужно добавить ее в конец файла. Если она закомментирована (в начале строки знак #
) — нужно раскомментировать строку.
Для того чтобы директивы mod_rewrite можно было использовать в .htaccess, надо в конфигурационном файле Apache, в соответствующем разделе <Directory /путь/до/директории>
прописать:
AllowOverride all
После внесения изменений в конфигурационный файл Apache, для вступления в силу этих изменений, нужно перезапустить веб сервер.
Для ОС Ubuntu, Debian:
systemctl restart apache2
Для ОС CentOS, RedHat, AlmaLinux:
systemctl restart httpd
В .htaccess для работы перенаправления нужно указать следующую директиву:
RewriteEngine On
Правила Redirect
Эти директивы вы можете прописывать как в конфиге Apache для нужного virtualhost, так и в файле . htaccess.
Redirect или RedirectPermanent
Главный недостаток данных правил заключается в том, что для каждого адреса необходимо прописывать новое правило. Если необходимо сделать несколько редиректов, то каждый новый редирект пишется с новой строки.
Redirect 301 /old-page.html http://new-domain.ru/new-page.html
или
Redirect permanent /old-page.html http://new-domain.ru/new-page.html
Для перенаправления всех запросов на другой сайт вы можете использовать следующую конструкцию:
Redirect 301 / http://new-domain.ru/
или
Redirect permanent / http://new-domain.ru/
RedirectMatch
Этот редирект отличается тем, что в нем можно использовать регулярное выражение. Например, при переносе сайта с Windows на Linux, необходимо сменить все ссылки с *.php на *.aspx:
RedirectMatch /(.*)\.aspx$ /$1.php
RewriteRule
Для работы данного модуля убедитесь в том, что включена опция FollowSymLinks, эту функцию нужно прописать в конфигурационном файле Apache или в файле . (.*)$ https://www.domain.com/$1 [R=301,L]
Nginx
Модуль ngx_http_rewrite_module, необходимый для настройки перенаправлений, устанавливается автоматически вместе с Nginx.
Рекомендуется добавлять правила редиректа по одному, т.к. можно получить ошибку, либо циклическое перенаправление. Поэтому после каждого изменения конфигурационного файла нужно проверять его корректность командой:
nginx -t
Редирект 301 с www.domain.com на domain.com
Для Nginx вам нужно создать две секции server в конфигурационном файле, одну для домена с www, вторую для домена без www:
Секция server
для редиректа:
server { listen 80; server_name www.domain.com; return 301 $scheme://domain.com$request_uri; }
Секция server
, где находятся основные настройки домена:
server { listen 80; server_name domain.com; ..... }
После внесения изменений в конфигурационный файл Nginx, для вступления в силу этих изменений, нужно перезапустить веб сервер.
nginx -s reload
или
systemctl reload nginx
Редирект 301 с domain.com на www.domain.com
Для Nginx вам нужно создать две секции server в конфигурационном файле, одну для домена с www, вторую для домена без www:
Секция server
для редиректа:
server { listen 80; server_name domain.ru; return 301 http://www.$host$request_uri; }
Секция server
, где находятся основные настройки домена.
server { listen 80; server_name www.domain.com; ..... }
После внесения изменений в конфигурационный файл Nginx, для вступления в силу этих изменений, нужно перезапустить веб сервер.
nginx -s reload
или
systemctl reload nginx
Редирект 301 с https на http
Для Nginx вам нужно создать две секции server
в конфигурационном файле, одну для https (443 порт), вторую для http (80 порт).
Секция server
для открытия по https (443 порт) и настройки редиректа:
server { listen 443; server_name domain. ru www.domain.ru; return 301 http://$host$request_uri; }
Секция server
для открытия по http (80 порт), где находятся основные настройки домена.
server { listen 80; server_name www.domain.com; ..... }
После внесения изменений в конфигурационный файл Nginx, для вступления в силу этих изменений, нужно перезапустить веб сервер.
nginx -s reload
или
systemctl reload nginx
Редирект 301 с http на https
Для Nginx вам нужно создать две секции server
в конфигурационном файле, одну для http (80 порт), вторую для https (443 порт).
Для нового домена в конф. файле nginx
Секция server
для открытия по http (80 порт) и настройки перенаправления:
server { listen 80; server_name domain.com www.domain.com; return 301 https://$host$request_uri; }
Секция server для открытия по https (443 порт), где находятся основные настройки домена.
server { listen IP. се.рве.ра:443; server_name www.domain.com; ..... }
Для существующего домена в конф. файле nginx
Если вы вносите изменения в существующую секцию конф. файла nginx делайте это так:
из основной секции домена удалите строку вида
listen IP.се.рве.ра:80;
и создайте новую секцию server такого вида:
server { listen 80; server_name domain.com www.domain.com; return 301 https://$host$request_uri; }
После внесения изменений в конфигурационный файл Nginx, для вступления в силу этих изменений, нужно его перезапустить так:
nginx -s reload
или
systemctl reload nginx
Nginx, Apache настройка редиректов (переадресация) [АйТи бубен]
Перенаправление URL (англ. URL redirection, URL forwarding, domain redirection, domain forwarding) — техника, применяемая для того, чтобы веб-страница была доступна под несколькими URL.
Слово редирект применяется в значениях:
Для SEO: если вы настроили 301 редирект — его длительность вечность! Помним это!
Это абзац о склеивании сайтов, а не о настройке перенаправления с http на https!!
Если вы выбирали современного регистратора доменных имен, тогда вы можете использовать функцию URL Redirect Record в настройках DNS для создания 301, 302 ответа и не заморачиваться с настройкой редиректов. Ниже таблица какой сайт будет индексироваться при применении URL Redirect Record.
P.S. Для тех кто любит разбираться, сервис URL Redirect Record — это не функция DNS, это сам хостинг провайдер создает сайт и редиректит.
Сервис проверки HTTP заголовков сайта HTTP Status Codes Checker.
Apache
Если вы хотите запретить использование HTTP, то самым разумным будет перенаправлять все HTTP запросы к страницам на их HTTPS адрес. Чтобы добиться этого в Apache можно, например, организовать перенаправление с помощью mod_rewrite. Для этого сначала необходимо его активировать:
sudo a2enmod rewrite sudo service apache2 restart
Затем изменить файл /etc/apache2/sites-enabled/000-default, отвечающий за виртуальный хост по умолчанию для HTTP запросов. В этот файл надо добавить внутрь блока
<VirtualHost *:80> ... </VirtualHost>
строчки:
RewriteEngine On RewriteCond %{HTTPS} =off RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [END,QSA,R=permanent]
При этом все настройки директорий можно удалить, поскольку по HTTP на ваши сайты всё равно будет не попасть.
Всё, теперь ещё раз перезапустите Apache и убедитесь, что при заходе по HTTP вы автоматически перенаправляетесь на HTTPS страницу.
.htaccess
Правила 301 редирект от letsencryp (certbot)
Nginx
Перенаправление HTTP запросов на HTTPS в Nginx оптимизация и использование делается так:
server { server_name dieg. http://target_domain.ru$request_uri; ... }
здесь вместо source_domain.ru нужно подставить имя домена, с которого нужно редиректить, а вместо target_domain.ru — имя домена, на который редиректить.
HTML редирект – это соответствующий мета-тег с некоторыми параметрами и значениями. Синтаксис
<meta http-equiv="refresh" content="seconds;URL-to-redirect">
Мета-тег с редиректом прописывается в секции <head> </head>. Параметр content=»» со значением 1 определяет перенаправление через 1 секунду и т.п. После URL= вводится адрес перенаправления с текущей страницы.
Рабочий пример метаредиректа. Посетитель не заметит что произошло перенаправление, так как мы установим для этого задержку в ноль секунд.
- index.php
<html> <head> <meta name="robots" content="noindex, nofollow"> <meta http-equiv="refresh" content="0;url=https://wiki. dieg.info"/> </head> <body> </body> </html>
Пример Javascript редирект через document.location и метаредиректа
- index.php
<html> <head> <meta name="robots" content="noindex, nofollow"> <meta http-equiv="refresh" content="0;url=https://wiki.dieg.info"/> </head> <body> <script language="javascript" type="text/javascript"> document.location='https://wiki.dieg.info'; </script> </body> </html>
Читайте также
Сервис проверки HTTP заголовков сайта HTTP Status Codes Checker.
cURL тестирование HTTP заголовков, SOCKS и другие
Как автоматически перенаправлять HTTP на HTTPS в cPanel/WHM
.htaccess redirect — перенаправление Apache .htaccess 301
Apache .htaccess 301 перенаправление — это перенаправление на стороне сервера и постоянное перенаправление.
Файл .htaccess — это файл конфигурации сервера Apache.
.htacces s файл используется для каждого каталога.
Использование .htaccess
файл снижает производительность сервера. .htaccess следует избегать использования
когда у вас есть доступ к основному файлу конфигурации сервера Apache
httpd.conf. Веб-сайты виртуального хостинга обычно не имеют доступа к
httpd.conf и должен использовать файл .htaccess .
Этот ответ перенаправления 301 уведомляет поисковые системы о том, что страница
навсегда перемещен со старого URL на новый URL.
Поисковые системы
также перенесите ранг страницы старого URL-адреса на новый URL-адрес.
.htaccess redirect
Добавьте этот код или создайте новый файл .htaccess в old-page.html 9каталог 0004.
Перенаправление одного URL-адреса
Постоянное перенаправление с old-page.html на new-page.html .
.htaccess:
Перенаправление 301 /old-page.html http://www.mydomain.com/new-page.html
Перенаправление всего домена
Постоянное перенаправление со всех страниц домена на newdomain.com .
Файл .htaccess должен находиться в корневом каталоге старого веб-сайта.
.htaccess:
Перенаправление 301 / http://www.newdomain.com/
Включение конфигурации .htaccess
Если вы загрузили файл .htaccess на old-page.html
каталог и перенаправление не работает, обычно это означает, что файлы .htaccess не включены в файле конфигурации сервера Apache httpd.conf.
Файл .htaccess можно включить, добавив файл httpd.conf сервера Apache.
httpd.conf:
<Каталог /srv/www/rapidtables.com/public_html/web/dev/redirect>
AllowOverride All
Важно! Этот параметр не рекомендуется использовать, поскольку он замедляет работу сервера Apache.
httpd.conf redirect
Если у вас есть разрешение на изменение файла httpd.conf , это
лучше добавить директиву Redirect в httpd.conf
вместо файла .htaccess .
Проверить, загружена ли библиотека модуля перезаписи mod_rewrite.so сервером apache:
$ apache2ctl -M
Добавьте следующий код в файл httpd.conf.
Если библиотека модуля перезаписи mod_rewrite.so недоступна,
раскомментируйте первую строку, чтобы загрузить модуль перезаписи.
httpd.conf:
# LoadModule rewrite_module /usr/lib/apache2/modules/mod_rewrite.so
<Каталог /srv/www/rapidtables.com/public_html/web/dev/redirect>
Перенаправление 301 /old-page .html http://www.mydomain.com/new-page.html
Не забудьте перезапустить сервер Apache после обновления httpd.conf:
$ sudo /etc/init.d/apache2 restart
См. также
1 Перенаправление URL
Как реализовать перенаправление 301 в файлах Apache .
htaccess
Перенаправление страниц или сайтов на веб-сервере Apache очень просто и является хорошим способом обеспечения SEO. Вы делаете это, изменяя файл на своем веб-сайте, называемый файлом .htaccess (обратите внимание, что фактическое имя файла начинается с точки). Файл .htaccess — это управляющий файл, который позволяет изменять конфигурацию сервера для каждого каталога.
Файл управляет этим каталогом и всеми содержащимися в нем подкаталогами. Обычно этот файл находится в корневой папке вашего сайта. Когда вы редактируете файлы Apache, очень важно, чтобы ваш редактор сохранял файл в формате UNIX; в противном случае могут возникнуть ошибки.
Файл .htaccess должен быть настроен по умолчанию, но если ваша корневая папка не содержит этого файла, попросите кого-нибудь, кто понимает, как создать файл .htaccess, создать его. Будьте осторожны здесь. Некоторые программы загрузки (FTP) скрывают файл .htaccess. Вы не хотите перезаписывать существующий .htaccess своим обновлением. 9(.*) http://www.мой_домен.com/$1 [R=301,L]
RedirectMatch 301 (.*).asp$ http://www.mydomain.com$1.php
ЕслиМодуль>
# КОНЕЦ
Обратите внимание, что предыдущий пример перенаправляет все, кроме www.mydomain.com. Другими словами, он также перенаправляет поддомены, такие как subdomain.mydomain.com и test.mydomain.com. Это может создать путаницу, если вы используете поддомены для тестовых сред или для других целей.
Прежде чем начать, убедитесь, что у вас есть доступ к файлу .htaccess. Если у вас есть доступ к вашему серверу, чтобы вы могли загружать и изменять файлы, у вас не должно возникнуть проблем. (На сервере Apache изменение файла .htaccess не требует прав доступа на уровне администратора.) Если вы не можете получить доступ к файлам в своих веб-папках, позвоните своему хостинг-провайдеру и запросите эту возможность (или обратитесь к человеку, который может получить доступ к этим файлам для ты).
Чтобы отредактировать файл .htaccess для перенаправления страниц на вашем веб-сайте, вы должны сначала узнать URL-адреса каждой веб-страницы/сайта, которые вы хотите перенаправить, и URL-адреса новых страниц/сайтов, на которых будет перенаправлен на. Затем выполните следующие действия:
Войдите на свой веб-сайт и в корневой веб-папке найдите файл с именем .htaccess.
Если файла .htaccess нет, его необходимо создать. Опять же, будьте осторожны, чтобы на самом деле не было .htaccess и чтобы вы не перезаписывали его.
.htaccess — это скрытый файл, поэтому вам нужно разрешить вашей FTP-программе просматривать скрытые файлы, чтобы увидеть его.
Откройте файл .htaccess с помощью текстового редактора с окончанием строк в стиле UNIX, например Notepad++.
Редактор кода, такой как Adobe Dreamweaver, также отлично обрабатывает файл .htaccess, поскольку он открывает файл как текст, но с этой задачей может справиться и простой текстовый редактор.
При необходимости отредактируйте файл, соблюдая точный синтаксис.
Чтобы добавить перенаправление 301 на определенную страницу в Apache
Добавьте в файл .htaccess строку, сообщающую серверу, что делать. Далее следуют два способа сделать это, и оба они выполняют одно и то же. ( Примечание: Вы должны заменить свои собственные URL-адреса файлов и доменное имя [корневая часть URL-адреса вашего сайта] при использовании приведенных здесь примеров.)
RedirectPermanent /старый-файл.html http://www.mydomain.com/new-file.html
или
Перенаправление 301 /старый-файл.html http://www.mydomain.com/new-file.html
На 301 Перенаправление всего домена в Apache
Чтобы перенаправить весь домен, вы добавляете строку в файл .htaccess, которая дает серверу ваши инструкции. Перенаправление с одного домена на другой будет писаться так:
RedirectPermanent / http://www.new-domain.com/
Чтобы разбить их, каждая команда 301 Redirect состоит из трех частей:
Первая часть сообщает серверу, что делать, и вы можете ввести это двумя способами: либо RedirectPermanent , либо Redirect 301.
Во второй части показан относительный путь старого файла (расположение файла относительно текущего каталога, в котором находится файл .htaccess). Если ваш файл .htaccess находится в корневом веб-каталоге, вы можете использовать URL-адрес файла без имени домена, например / old-file. html.
Третий раздел — это полный путь к новому файлу. Начиная с http://, вы хотите включить полный URL-адрес (например, http://www. mydomain.com/new-file. html).
После того, как вы вставите команды 301 Redirect для перенаправления ваших страниц, вам нужно поместить пустую строку в конец файла. Ваш сервер читает файл .htaccess построчно, поэтому вам нужно в какой-то момент включить символ перевода строки (возврат каретки), чтобы сервер знал, что вы закончили.
Об этой статье
Эта статья из книги:
- Search Engine Optimization All-in-One For Dummies,
Об авторах книги:
Брюс Клэй многими считается отцом поисковой оптимизации или SEO.