Переадресация с www на без www или правильный .htaccess для 1С-Битрикс
Задача переадресации домена без www на c www или обратно требует внесения изменений в .htaccess файл. Вся работа сводится к добавлению в вышеуказанный файл пары строк.
Открываем свой .htaccess файл и вставляем после RewriteEngine On строки с именем своего сайта
RewriteEngine On RewriteCond %{HTTP_HOST} ^SMSdesign.com.ua RewriteRule (.*) http://www.SMSdesign.com.ua/$1 [R=301,L]
Переадресация готова.
Но сервер-серверу рознь, особенно в совокупности с установленным 1С-Битрикс. Ниже два самых популярных варианта файла .htaccess. Какой сработает в Вашем случае проверяйте на практике.
Правильный .htaccess для Битрикс
Для удобства опубликуем полное содержимое файла для данной CMS
Вариант №1 — большинство русских и украинских хостеров
Options -Indexes ErrorDocument 404 /404.php <IfModule mod_php5.c> php_flag allow_call_time_pass_reference 1 php_flag session.use_trans_sid off </IfModule> <IfModule mod_rewrite.c> Options +FollowSymLinks RewriteEngine On RewriteCond %{HTTP_HOST} ^SMSdesign.com.ua$ [NC] RewriteRule ^(.*)$ http://www.SMSdesign.com.ua/$1 [R=301,L] RewriteCond %{REQUEST_URI} ^(.*/[^/\.]+)$ RewriteRule ^(.*)$ http://%{HTTP_HOST}/$1/ [R=301,L] RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-l RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_FILENAME} !/bitrix/urlrewrite.php$ RewriteRule ^(.*)$ /bitrix/urlrewrite.php [L] </IfModule> <IfModule mod_dir.c> DirectoryIndex index.php index.html </IfModule> <IfModule mod_expires.c> ExpiresActive on ExpiresByType image/jpeg "access plus 3 day" ExpiresByType image/gif "access plus 3 day" </IfModule>
Вариант 2 — западные сервера
Options -Indexes ErrorDocument 404 /404.php <IfModule mod_php5.c> php_flag allow_call_time_pass_reference 1 php_flag session.use_trans_sid off </IfModule> <IfModule mod_rewrite.c> Options +FollowSymLinks RewriteEngine On RewriteCond %{HTTP_HOST} ^SMSdesign.com.ua RewriteRule ^(.*)$http://www.SMSdesign.com.ua/$1 [R=301,L] RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-l RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_FILENAME} !/bitrix/urlrewrite.php$ RewriteRule ^(.*)$ /bitrix/urlrewrite.php [L] </IfModule> <IfModule mod_dir.c> DirectoryIndex index.php index.html </IfModule> <IfModule mod_expires.c> ExpiresActive on ExpiresByType image/jpeg "access plus 3 day" ExpiresByType image/gif "access plus 3 day" </IfModule>
Делаем редирект на сайте через файл .htaccess
Для чего нужен файл .htaccess?
.htaccess — это специальный файл веб-сервера Apache, в котором записаны инструкции для управления поведением сервера в этой папке, и во всех вложенных (если в них отсутствуют свои файлы .htaccess).
Данный файл является идеальным и безопасным инструментом для организации редиректа — т.е. перенаправления с одних страниц на другие страницы сайта.
Настройка переадресации актуальна при разработке сайта или доработке сайта. Обычно потребность возникает в следующих случаях:
- Необходимость добавления «www» в URL, чтобы объединить сайт с «www» и без «www».
- Потребность работы сайта по защищенному протоколу HTTPS с SSL-сертификатом шифрования — настраивается редирект с протокола «http://» на протокол «https://». Это обязательно для работы платежных систем, а также для более активного роста сайта в поиске.
- Направление на корректные страницы сайта при удалении старых. При удалении обычно перенаправляют на главную страницу или на страницу со схожим контентом.
- При изменении адреса страниц перенаправляют на новый адрес аналогичной страницы.
- Если к сайту подключено несколько доменов и чтобы поисковые системы их не считали разными, то также настраивается редирект на один основной домен. Например, с доменов в зонах .com и .рф, на домен в зоне .ru.
- Для корректного формирования адресов страниц, например, чтобы все страницы были с закрывающим слэшем «/».
Все вышеперечисленные пункты очень важны для продвижения сайта (SEO), управления репутацией (SERM) и контекстной рекламы. Поисковые системы, впрочем, как и посетители сайта, не должны видеть 404 ошибку об отсутствии страницы и всегда должны попадать на актуальную и корректную страницу из поиска.
Это обязательно положительно повлияет на уменьшение количество отказов сайта, повышение продолжительности посещения и конечно же на увеличение количества посетителей в конечном счете.
Способы осуществления редиректа через файл .htaccess
Для осуществления на сайте редиректа через файл .htaccess, можно использовать любую из трех директив Apache:
- Redirect;
- RedirectMatch;
- RewriteRule.
Правила использования директивы Redirect
Redirect [status] URL-path URL-to-redirect
status — это статус кода состояния HTTP (вид перенаправления) в виде трех цифр. Первая цифра указывает на класс состояния: 3xx — Redirection (перенаправление).
Примеры статусов кода состояния HTTP класса Redirection (перенаправления):
- 300 Multiple Choices — Множество выборов;
- 301 Moved Permanently — Перемещено навсегда;
- 302 Moved Temporarily — Перемещено временно;
- 303 See Other — Смотреть другое;
- 304 Not Modified — Не изменялось;
- 305 Use Proxy — Использовать прокси;
- 306 Зарезервировано — код использовался только в ранних спецификациях;
- 307 Temporary Redirect — временное перенаправление.
Наиболее часто используются коды 301 и 302 перемещение навсегда или перемещение временно.
URL-path — часть запрашиваемого пользователем или поисковой системой адреса, которая должна обязательно начинаться со слэша «/».
- Если URL-path заканчивается не слэшем, то редирект будет срабатывать только в случае точного совпадения запрошенного пользователем адреса и URL-path.
- Если URL-path заканчивается слэшем, то редирект сработает не только для указанного адреса, но и для всех, которые начинаются на указанный адрес. А к URL-to-redirect будет добавлена часть адреса, следующая за последним указанным слэшем в URL-path.
URL-to-redirect — полный адрес сайта, конкретной страницы или раздела, на который будет осуществляться перенаправление. При этом должен присутствовать протокол (http:// или https://) и закрывающий адрес сайта знак «/».
Правила использования директивы RedirectMatch
RedirectMatch [status] URL-regexp URL-to-redirect
Действие директивы RedirectMatch аналогично Redirect. Отличие заключается в том, что в параметрах URL-regexp и URL-to-redirect можно использовать регулярные выражения.
Специальные символы используемые в регулярных выражениях
- Точка «.» — подразумевается наличие любого символа.
- Круглые скобки «()» — все, что в них находится в первом выражении, записывается в специальные переменные $1, $2, $3, и т. д. подряд, в порядке встречи скобок. Далее переменные можно использовать во втором выражении.
- Квадратные скобки «[]» — все, что в них находится, это так называемый список перечисления. Например: запись [0–9] — означает наличие одной цифры, [a-z] — любую маленькую латинскую букву, а [A-Za-z_-] — любую латинскую букву, знак подчеркивания или прочерк.
- Вопросительный знак «?» — означает, что символ перед ним или выражение, если оно заключено в круглые или квадратные скобки, может присутствовать, а может и не присутствовать. А если вместо вопросительного знака «?» поставить знак звездочка «*», то символ или выражение в скобках может присутствовать несколько раз, а может и не присутствовать вовсе.
- Знак степени «^» — означает начало строки, а знак доллар «$» — ее конец.
- Обратный слэш «\» — если необходимо, чтобы какой-либо специальный символ был применен по его прямому назначению (то есть, чтобы точка стала точкой, а не любым символом), то перед этим символом ставится этот специальный символ «\» . И, соответственно, чтобы обратный слэш им и остался, перед ним так же необходимо поставить этот спецсимвол.
Правила использования директивы RewriteRule
RewriteEngine on #Должно быть включено для работы RewriteRule
RewriteRule URL-regexp URL-to-redirect [L,R[=status]]
У директивы RewriteRule более широкий спектр применения, который, в числе прочих возможностей, разрешает ее использование для перенаправления флагов L (выполнить немедленно) и R (редирект). Флаги L и R указываются в конце строки в квадратных скобках «[]».
Правила использования директивы RewriteRule вместе с RewriteCond
RewriteEngine on #Должно быть включено для работы RewriteRule
RewriteCond %{NAME_OF_VARIABLE} URL
RewriteRule URL-regexp URL-to-redirect [L,R[=status]]
Директива RewriteCond определяет условия для какого-либо правила. Перед директивой RewriteRule располагаются одна или несколько директив RewriteCond. Следующее за ними правило преобразования используется только тогда, когда URLсоответствует условиям этой директивы и также условиям этих дополнительных директив.
Переменные сервера %{NAME_OF_VARIABLE} — переменные полностью соответствуют названным похожим образом MIME-заголовкам HTTP.
Пример редиректа в файле .htaccess
Внимание! Перед вставкой скопированного кода в файл .htaccess, отредактируйте его в блокноте или другой программе.
Options -Indexes
ErrorDocument 404 /404.php
php_flag allow_call_time_pass_reference 1
php_flag session.use_trans_sid off
php_value register_globals off
#php_value display_errors 1
php_value session.entropy_file /dev/urandom
php_value session.entropy_length 128
php_value mbstring.func_overload 2
php_value mbstring.internal_encoding utf-8
php_value max_input_vars 10000
php_value pcre.recursion_limit 1000
php_flag session.cookie_httponly off
php_flag allow_call_time_pass_reference 1
php_flag session.use_trans_sid off
php_value register_globals off
php_value display_errors 1
php_value session.entropy_file /dev/urandom
php_value session.entropy_length 128
php_value mbstring.func_overload 2
php_value mbstring.internal_encoding utf-8
php_value max_input_vars 10000
php_value pcre.recursion_limit 1000
php_flag session.cookie_httponly off
php_value opcache.max_accelerated_files 100000
php_flag apc.cache_by_default Off
Options +FollowSymLinks
RewriteEngine On#CUSTOM-REDIRECT
#Redirect host.ru -> www.host.ru
RewriteCond %{HTTP_HOST} !^www\.
RewriteRule ^(.*)$ https://www.%{HTTP_HOST}/$1 [L,R=301]
#Redirect www.site.ru/page1/ -> www.site.ru/page2/
RewriteCond %{REQUEST_URI} ^/news/$
RewriteRule .* /blog/news/? [R=301,L]
#Redirect www.site.ru/.../page1/ -> www.site.ru/.../page2/
RedirectMatch 301 ^(.*)/map/$ https://www.abm-irk.ru/
#CUSTOM-REDIRECT-END#BITRIX-REDIRECT
RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -l [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteCond %{REQUEST_FILENAME} [\xC2-\xDF][\x80-\xBF] [OR]
RewriteCond %{REQUEST_FILENAME} \xE0[\xA0-\xBF][\x80-\xBF] [OR]
RewriteCond %{REQUEST_FILENAME} [\xE1-\xEC\xEE\xEF][\x80-\xBF]{2} [OR]
RewriteCond %{REQUEST_FILENAME} \xED[\x80-\x9F][\x80-\xBF] [OR]
RewriteCond %{REQUEST_FILENAME} \xF0[\x90-\xBF][\x80-\xBF]{2} [OR]
RewriteCond %{REQUEST_FILENAME} [\xF1-\xF3][\x80-\xBF]{3} [OR]
RewriteCond %{REQUEST_FILENAME} \xF4[\x80-\x8F][\x80-\xBF]{2}
RewriteCond %{REQUEST_FILENAME} !/bitrix/virtual_file_system.php$
RewriteRule ^(.*)$ /bitrix/virtual_file_system.php [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-l
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !/bitrix/urlrewrite.php$
RewriteRule ^(.*)$ /bitrix/urlrewrite.php [L]
RewriteRule .* - [E=REMOTE_USER:%{HTTP:Authorization}]
#BITRIX-REDIRECT-END
DirectoryIndex index.php index.html
ExpiresActive on
ExpiresByType image/jpeg "access plus 3 day"
ExpiresByType image/gif "access plus 3 day"
ExpiresByType image/png "access plus 3 day"
ExpiresByType text/css "access plus 3 day"
ExpiresByType application/javascript "access plus 3 day"php_value default_charset utf-8
AddType 'text/html; charset=utf-8' .html .htm .shtml
Пример файла .htaccess для сайта на «1С-Битрикс»
Скачать — Файл рекомендован разработчиками «1С-Битрикс». Для использования необходимо положить файл в корневую папку сайта и переименовать в «.htaccess».
htaccess и поисковая оптимизация в «Битрикс»
Вам не приходилось сталкиваться с такой ситуацией? Через три – четыре месяца после сдачи сайта заказчик просит «навести порядок с SEO». И присылает длинный список пожеланий сеошников, где во первых строках письма стоит задание «редирект с www на без www». Пройдя стадию отрицания и гнева, благоразумный разработчик вычленяет повторяющиеся требования и включает их в чек-лист разработки сайта. Упростим ему задачу и приведем два типовых требования специалистов по поисковой оптимизации, а также инструкцию по их внедрению.1. Переадресация с «без www» на «с www»
Первое требование определяет, что запросы адресов с не — основными хостами (lдопустим, http://вашсайт.ru/ без приставки www) обязаны получать от сервера ответ НТТР/1.1 301 Моvеd Pеrmаnеntly. При этом из поля Location должен отдаваться адрес, включающий основной хост сайта (http://www.вашсайт.ru/).
Чтобы выполнить это требование, надо найти в корневом каталоге сайта файл конфигураций Apache .htaccess и добавить в него следующее условие:
RewriteCond %{HTTP_HOST} !^www\. RewriteRule ^(.*)$ http://www.%{HTTP_HOST}/$1 [L,R=301]
2. Редирект с «index.php» на папку
Второе требование определяет, что переходы на страницы вида http://www.вашсайт.ru/ index.php должны переадресовываться на дублирующие их страницы вида http://www.вашсайт.ru/ и при этом сервер должен отдавать ответ НТТР/1.1 301 Моvеd Pеrmаnеntly.
Источники советуют много разного. Методом проб и ошибок мы устаовили, что лучше всего с этой задачей справляется такое условие в .htaccess:
RewriteCond %{REQUEST_URI} ^(.*)/$ RewriteRule .* - [L] RewriteCond %{ENV:REDIRECT_STATUS} 200 RewriteRule .* - [L] RewriteCond %{REQUEST_METHOD} =GET RewriteCond %{REQUEST_URI} ^(.*)/index.php$ RewriteRule ^(.*)$ %1/ [R=301,L]
3. «Два в одном»
Итак, запишите в свой чек-лист разработки сайта пункт:
Добавить в .htaccess в корне сайта условие
<IfModule mod_rewrite.c> RewriteEngine On RewriteCond %{HTTP_HOST} !^www\. RewriteRule ^(.*)$ http://www.%{HTTP_HOST}/$1 [L,R=301] RewriteCond %{REQUEST_URI} ^(.*)/$ RewriteRule .* - [L] RewriteCond %{ENV:REDIRECT_STATUS} 200 RewriteRule .* - [L] RewriteCond %{REQUEST_METHOD} =GET RewriteCond %{REQUEST_URI} ^(.*)/index.php$ RewriteRule ^(.*)$ %1/ [R=301,L] </IfModule>
И будет вам счастье. Удачи!
——————————-
Спасибо за внимание!
Читайте свежий выпуск «Кладовки программиста» каждый день!
Источник:
Назад в раздел
.htaccess — htaccess bitrix — Stack Overflow на русском
Stack Overflow на русскомLoading…
- 0
- +0
- Тур Начните с этой страницы, чтобы быстро ознакомиться с сайтом
- Справка Подробные ответы на любые возможные вопросы
- Мета Обсудить принципы работы и политику сайта
- О нас Узнать больше о компании Stack Overflow
- Бизнес Узнать больше о поиске разработчиков или рекламе на сайте
Частые вопросы по работе с Битрикс
В данном посте мы собрали вопросы, которые чаще всего задают нам наши клиенты в результате ежедневных консультаций по работе и администрированию сайтов и магазинов на Битрикс
Где в битрикс находиться .htaccess файл?
В Битриксе .htaccess находится там же, где и в любой иной CMS (или на сайте без CMS) — в корневой директории сайта. Единственным нюансом является то, что увидеть его через админку в Структура сайта — Файлы и папки может только пользователь с правами администратора. В отдельных случаях — только первичный админ — логин с id=1. Так что для того, чтобы увидеть файл без доступа к данному логину, придется подключиться к сайту по ssh/scp или sftp/ftp.
Пример дефолтного .htaccess файла для 1С-Битрикс мы публиковали в одном из ранних постов — статье
Можно ли закрыть сайт для неавторизированных пользователей?
Да можно, для этого вам нужно зайти в административную панель сайта, пройти по пути Настройки — Настройки модулей — Главный модуль и в нижней части страницы будет пункт Временное закрытие публичной части сайта. После нажатия на кнопку сайт будет закрыт от неавторизированных посетителей заставкой с надписью site under construction
Если не можете найти путь, просто вставьте в адресную строку после имени своего сайта путь /bitrix/admin/settings.php?lang=ru&mid=main&mid_menu=1.
Как изменить эту ужасную страницу: Site under construction. Please try again later. ?
Вопрос вытекающий из предыдущего. Для замены безликой стандартной заглушки Битрикса нужно создать свой файл site_closed.php в папке /bitrix/php_interface/ и поместить в него нужную информацию. Вместо заглушки отобразится содержимое вашего файла.
Есть нюанс, если сайтов несколько, то для разных заставок на разных доменах нужно поместить файл в папку с id вашего сайта. Например,
/bitrix/php_interface/s1/site_closed.php
Исходный код и пример заставки отключенного сайта находится в файле: /bitrix/modules/main/include/site_closed.php.
Могу ли я отключить лишние или добавить новые поля при заполнении товаров в админке?
Отключить лишние поля, как и добавить новые, на основании ранее созданных свойств инфоблока можно с помощью инструмента Настройка формы редактирования. Вызов инструмента осуществляется нажатием на кнопку с «шестерней» в правом верхнем углу списка элементов. Аналогично настраиваются колонки представления в категории инструментом Настроить внешний вид списка.
Подробное руководство по настройке карточки в интернет-магазине мы описывали ранее
Где в Битриксе лежат почтовые шаблоны?
Визуально посмотреть на все почтовые шаблоны можно в админке. Однако, если вы захотите найти шаблоны физически на сервере, то увы. Исходников в виде статических файлов не существует. Все шаблоны хранятся в базе данных сайта. Все шаблоны хранятся в одной таблице
b_event_message. В данной таблице выбираете или находите нужный шаблон по его ID или любой иной характеристике и правите в свое удовольствие.Почему при вставке видео через редактор в коде ошибки <ifr ame> … </ifr> ?
Данная ситуация знакома всем желающим добавить не только видео с YouTube, но и практически любые вставки контента с facebook, instagram и прочих сервисов, использующих iframe. Данный тег «режет» проактивный фильтр системы. Есть два метода бороться с этим: радикальный и оптимальный.
Радикальным является перевод параметра Активная реакция на вторжение: в позицию Оставить опасные данные как есть. Сделать это можно на странице Настройки — Проактивная защита — Проактивный фильтр.
Оптимальным является настройка прав группы, имеющей доступ к текстовым материалам. Нужно сделать перевод параметра
Не могу зайти на сервер. Ошибка Disconnected no supported authentication methods available … ?
После установки Виртуальной машины Битрикс на ряде серверов можно столкнуться с ситуацией, что под вновь созданным пользователем bitrix коннект к серверу по ssh/scp/sftp завершается ошибкой — Authentication failed.. Разгадкой может служить то, что показ