Apache 301 редирект: Как настроить 301 редирект в .htaccess, web.config, на PHP и JavaScript

Перенаправление 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

  • PHP-перенаправление
  • Генератор переадресации
  • Как реализовать перенаправление 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-адреса новых страниц/сайтов, на которых будет перенаправлен на. Затем выполните следующие действия:

    1. Войдите на свой веб-сайт и в корневой веб-папке найдите файл с именем .htaccess.

      Если файла .htaccess нет, его необходимо создать. Опять же, будьте осторожны, чтобы на самом деле не было .htaccess и чтобы вы не перезаписывали его.

      .htaccess — это скрытый файл, поэтому вам нужно разрешить вашей FTP-программе просматривать скрытые файлы, чтобы увидеть его.

    2. Откройте файл .htaccess с помощью текстового редактора с окончанием строк в стиле UNIX, например Notepad++.

      Редактор кода, такой как Adobe Dreamweaver, также отлично обрабатывает файл .htaccess, поскольку он открывает файл как текст, но с этой задачей может справиться и простой текстовый редактор.

    3. При необходимости отредактируйте файл, соблюдая точный синтаксис.

    Чтобы добавить перенаправление 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.

    This entry was posted in Директ