Htaccess redirect и его конфигурации
Опубликованно 12.02.2018 00:27
Файлы .htaccess может находиться в корневом каталоге сайта (например, /home/user/имя_сайта/) , или его подкаталогах. Они используются для организации перенаправления («redirect») посетителей с домена или документ на вашем веб-сервера на другой. Каждый файл .htaccess содержит набор правил (принципов), в соответствии с которой веб-сервер перенаправляет пользователя на определенную страницу.
Многие системы управления контентом принимают параметр redirect сайта .htaccess. Вы можете редактировать созданные файлы вашей CMS, вводя новые директивы перенаправления, или создавать свои собственные файлы .htaccess вручную. Создание файла .htaccess
Первый этап установки системы .htaccess-это, на самом деле, создание самого файла. И .htaccess должен быть простой текстовый файл. Это означает, что необходимо создать в программе для редактирования текста, способного генерировать файл plain text (.txt). На компьютере с Windows, вы можете использовать "блокнот", который является одним из встроенных стандартных программ. На Mac вы можете использовать TextEdit. Сначала нужно открыть меню «Настройки» в TextEdit и в разделе «Новый документ» и выберите «Просто текст». После этого вы можете начать процесс создания нового текстового документа TextEdit для вашего файла .htaccess. На Linux, вы можете использовать один из многочисленных текстовых редакторов, доступных для вашего дистрибутива – в качестве консоли (vi, nano), и графика (например, gedit).
При сохранении документа обязательно имя htaccess.txt. Если сохранить только как .htaccess, пк скрывается файл. Это происходит потому, что файлы, начинающиеся с точки, считаются системные файлы. Загрузка файла .htaccess на сервере
Для того, чтобы необходимая пройти через .htaccess файл должен быть загружен именно в тот же каталог на сервере, для которого вы хотите установить настройки перенаправления. Как правило, это ваш каталог в HTML-файл (/var/www/vhosts/example.com/httpdocs/), даже если вы можете загрузить в любой подкаталог на вашем сервере.
После того как вы загрузили файл, переименовать его прямо в .htaccess.
В этот момент файл может становиться невидимым, для того чтобы ваш FTP-клиент, потому что теперь имеет формат файловой системы. Многие FTP-клиенты позволяют просматривать скрытые файлы и папки – рекомендуется включить эту функцию. Инструкции по его активации, обратитесь к документации своего клиента. Мы проверяем работу .htaccess
Самый простой способ, чтобы убедиться, что это веб-сервер, и выпустить свой файл .htaccess, его преднамеренного повреждения.
Изменить файл .htaccess таким образом, чтобы первая строка начинается со слова Test:
Тест
# Set home page
Directoryindex, при page.html page.txt ...
Теперь, если вы перезагрузите главную страницу вашего сайта, вы увидите следующее сообщение об ошибке (на фото ниже).
Если эта ошибка появляется, - это, на самом деле, хорошо, потому что означает, что сервер обрабатывает файл и читает из него директивы переадресации. Если нет, убедитесь, что файл и каталог, в котором вы найдете, доступны для чтения и, если необходимо, изменить права доступа. Немного о приоритетах redirect .htaccess
Правила .htaccess являются рекурсивными. То есть директивы, записанные в файл /home/user/sitename_html/.htaccess будут применены и в этот каталог, и суб-папок, - за исключением случаев, если данное правило отменяется с директивой в файле .htaccess, который находится внутри каталога.
Таким образом, параметры, чтобы пройти через .htaccess, частые файл на более высоком уровне, будут перезаписаны параметры файлов, которые находятся на более низких уровнях. Например, если вы хотите, чтобы включить перенаправление на большую часть вашего веб-сайта, но отключить его для каталога, вы можете сформировать отдельный .htaccess с соответствующими параметрами и скачать только в этом каталоге.
Так же, как файл .htaccess нижнего уровня имеют приоритет на настройки PHP-в файле vhost.conf и php.ini на более высоких уровнях, если только переопределение, очевидно, не запрещено, для этих файлов.
Наконец, порядок, правила переадресации .htaccess в файле может быть важно для некоторых типов руководства. Список правил обрабатывается последовательно от начала до конца; директивы в начале файла, выполняются первыми. Redirect .htaccess: основные виды
Существуют различные типы текста, которые могут быть выполнены через файлы .htaccess. Давайте рассмотрим, и рассмотреть каждый тип, прежде чем научиться их использовать. 301: перенаправление на постоянной основе
Это наиболее распространенный тип переадресации и, очень вероятно, это то, что вы собираетесь более часто настраивать. В файле .htaccess 301 редирект страницы указывает, что его старый URL-адрес (URL-адрес перенаправления) больше не используется. 302: временный редирект
Redirect 302 означает, что старый URL-адрес страницы, временно отключен, но будет восстановлена в ближайшее время. Для того, чтобы сервер Apache-это правило переадресации используется по умолчанию.
Поэтому, прежде чем настраивать перенаправление .htaccess, вы должны решить, на постоянной или временной основе будет перенаправление. Для примеров в этой статье, мы собираемся использовать 301 редирект. Примеры сценариев перенаправления
Ниже приведены наиболее распространенные примеры redirect .htaccess.
Для того, чтобы использовать любой из них, необходимо открыть файл, созданный .htaccess в любом текстовом редакторе и внесите пример кода.
Для того, чтобы код заработал, в веб-сервера Apache должен быть включен модуль переопределения (mod_rewrite). Для этого необходимо выполнить ряд действий, в зависимости от вашей ОПЕРАЦИОННОЙ системы.
На Windows, выполните следующие действия:
Найдите и откройте файл .http.conf. Находится в директории, в которой у вас установлен Apache.
Создать резервную копию протокола http.conf, в случае необходимости, восстановить файл, если вы допустили какую-либо ошибку.
Найти в файле строку #LoadModule rewrite_module modules/mod_rewrite.я знаю, и раскомментируйте (уберите знак #).
Найдите диск, заключенный в тег <directory> и заменить <directory/> Options All AllowOverride All </directory>.
Найти все ссылки "AllowOverride None" и везде заменить на "AllowOverride All".
Перезапустить веб-сервер и браузер.
На Linux, достаточно выполнить в терминале:
sudo a2enmod rewrite
Эта команда ставит форму или сообщает, что модуль уже работает. Для того, чтобы ввести в действие новых изменений, перезапустите Apache команду в терминале:
sudo service apache2 restart
Теперь мы можем приступить к редактированию файла .htaccess и изучение наиболее общих директив переадресации.
1. Редирект с одной страницы на другую в .htaccess:
Redirect 301 /retiredpage.html http://www.example.com/newpage.html
2. Перенаправление папки (со всем содержимым):
RedirectMatch 301 ^/olddir/ http://www.yourdomain.com/newdir/
3. Redirect в .htaccess с удалением WWW:
RewriteEngine On
RewriteCond %{HTTP_HOST} ^www.sitename.com$ [NC]
RewriteRule ^(.*)$ http://sitename.com/$1 [L,R=301]
4. Перенаправление с добавлением WWW:
RewriteEngine On
RewriteCond %{HTTP_HOST} !^www.samplehost.com$ [NC]
RewriteRule ^(.*)$ http://www.samplehost.com/$1 [L,R=301]
5. Редирект на другой домен .htaccess (перенос интернет-сайта):
RedirectMatch 301 ^(.*)$ http://www.yoursite.com
6 .htaccess redirect HTML файл в PHP-файл:
RedirectMatch 301 (.*).html$ http://www.examplesite.com$1.php
7. Переадресация страницы с добавлением HTTPS:
RewriteCond %{HTTPS} off
RewriteRule (.*) https://%{SERVER_NAME}/$1 [R=permanent,L]
8. Заменить все заглавные буквы в URL в нижний регистр:
<IfModule mod_rewrite.c>
RewriteMap lc int:tolower
</IfModule>
Этот фрагмент кода нужно добавить в файл httpd.conf web-сервера. После этого нужно открыть файл .htaccess и залить:
RewriteEngine On
RewriteCond %{REQUEST_URI} [A-Z]
RewriteRule . ${lc:%{REQUEST_URI}} [R=301,L]
9. Использование регулярных выражений. Правила редиректа часто содержат символы, которые складываются в регулярные выражения. Таким образом сервер знает, что именно вы хотите изменить URL-адрес. Тем не менее, регулярные выражения могут быть сложными для понимания с первого взгляда. Здесь существуют некоторые общие элементы, которые можно увидеть и использовать правила перезаписи URL-адресов, но и конкретные примеры их использования:
^ : начало замены команды;
$ : в конце замены строки.
Пример: регулярное выражение ^книга1$ дает сигнал, чтобы найти и заменить текст «книга1» внутри ссылки.
. : любой символ, отличный от пробела (например, a, B, 3);
* : указывает, что предшествующий текст может быть повторен любое число раз;
Пример: регулярное выражение ^uploads.*$ позволяет заменить текст «uploads2009», «uploads2010» и так далее;
Регулярное выражение ^.*$ что есть «найти что-нибудь». Это полезно в том случае, если вы не уверены, что пользователь может вставить в текст URL-адреса.
() : выделить фрагмент текста, который должен быть использован в правило, как значение переменной $1. Это необходимо, например, для обработки запросов в отдельные файлы, которые должны быть одинаковыми для старой, и для новой версии URL-адреса. Ошибка 404 Not Found
Иногда бывает, что при настройке переадресации, возникают ошибки. Рассмотрим основные причины, по которым может не работать редирект .htaccess.
Общая ошибка 404 Not Found возникает, когда отклонение. В этом случае, необходимо внимательно изучить URL формируется в адресной строке. Если существует файл в новое место на сервере, указанном в правиле переадресации? Может быть необходимо скопировать файлы из старого расположения в новое место, или сделать правила переадресации шире, в случае отсутствия нужного файла на ссылку происходит перенаправление на главную страницу сайта.
Если URL-адрес просто не правильно (например, http://example.com/folder1//file.html - обратить внимание на два слэш), необходимо пересмотреть синтаксис, правила переадресации. Бесконечное URL, тайм-аут или цикл
Если образуется, когда он перенаправляет на URL-адрес слишком длинный, или страница слишком долго не запускается, браузер выдает сообщение об ошибке, перенаправления, вероятно, ряд правил передачи в конфликт между собой.
Нужно проверить весь файл .htaccess в области правил передачи, который может совпадать с другими правилами. Он также может быть необходимо, чтобы проверить файлы .htaccess в каталоге. Обратите внимание, что FTP не показывает файлы .htaccess, если у вас не включено отображение скрытых файлов и папок.
Кроме того, вы можете включить перенаправление внутри HTML и PHP страниц. Проверьте страницу, с которой возникает проблема, в теме внутренних переадресаций.
Добавление [L] после правила перенаправления могут помочь в некоторых случаях, потому что этот флаг команды сервера перестать искать перенаправления URL-адреса после применения правила. Как сделать редирект без .htaccess
В заключение рассмотрим, как сделать перенаправление URL-адреса без редактирования файла .htaccess, с помощью виртуальных хостов Apache. Кстати, этот метод проще, чем составление правил перенаправления с одной страницы на .htaccess.
Открыть в текстовом редакторе файл конфигурации виртуальный хост (httpd.conf), который обычно находится в каталоге /etc/apache2/sites/sitename.
Выбор образца файл показывает redirect:
<VirtualHost *:80>
ServerName www.mysite.com
ServerAlias www.mysite.com
Redirect / http://mysite.com
</VirtualHost>
Конфигурация выше, перенаправляет все запросы на домен без поддомена WWW.
Для того, чтобы перенаправить все запросы на домен с поддомена WWW, изменения конфигурации, как показано ниже.
<VirtualHost *:80>
ServerName anywebsite.com
ServerAlias anywebsite.com
Redirect / http://www.anywebsite.com
</VirtualHost>
Перезапустите Apache, и сайт начнет правильно направить. Описанный выше метод является самым простым и наиболее легко осуществить, а не редирект с одной страницы на другую в htaccess.
Категория: обо всём