В данном посте буду собирать все полезности для htaccess. Все в одном месте решил собрать для себя, чтобы не рыться каждый раз в поисках нужного решения. Буду накидывать информацию по мере необходимости
Интересный образец файла htaccess с основными задачами
############################################################################ #### Cтандартный .htaccess для проектов #### ############################################################################ RewriteEngine On # Директива включает редиректы. RewriteBase / # Без директивы (.*) = /$1 будет /var/wwww/site/web/$1 с директивой = /$1 Options +FollowSymLinks # Разрешает переход по символическим ссылкам. ############################################################################ #### Перенаправляем протокол https на http #### ############################################################################ RewriteCond %{HTTPS} on # Проверяем наличие https в URL. RewriteRule ^.*$ http://%{SERVER_NAME}%{REQUEST_URI} # Перенаправляем протокол на http. ############################################################################ #### Выбор основного зеркала (или с www или без www) #### ############################################################################ # 1. Редирект с www на без www. (раскоментировать директивы пункта 1) #RewriteCond %{HTTP_HOST} ^www\.(.*) [NC] # Проверяем, содержит ли домен www (в начале URL). #RewriteRule ^(.*)$ http://%1/$1 [R=301,L] # Перенаправляем URL на домен без www. #### # 2. Редирект без www на www. (раскоментировать директивы пункта 2) #RewriteCond %{HTTP_HOST} !^www\.(.*) [NC] # Проверяем, не содержит ли домен www (в начале URL). #RewriteRule ^(.*)$ http://www.%{HTTP_HOST}/$1 [R=301,L] # Перенаправляем URL на домен c www. ############################################################################ #### Убираем повторяющиеся слеши (/) в URL #### ############################################################################ RewriteCond %{REQUEST_URI} ^(.*)/{2,}(.*)$ # Проверяем, повторяется ли слеш (//) более двух раз. RewriteRule . %1/%2 [R=301,L] # Исключаем все лишние слеши. ############################################################################ #### Убираем слеши в конце URL для статических файлов (содержит точку) #### ############################################################################ RewriteCond %{REQUEST_URI} \..+$ # Если файл содержит точку. RewriteCond %{REQUEST_FILENAME} !-d # И это не директория. RewriteCond %{REQUEST_FILENAME} -f # Является файлом. RewriteCond %{REQUEST_URI} ^(.+)/$ # И в конце URL есть слеш. RewriteRule ^(.+)/$ /$1 [R=301,L] # Исключить слеш. ############################################################################ #### Добавляем слеш(/), если его нет, и это не файл. #### ############################################################################ RewriteCond %{REQUEST_URI} !(.*)/$ # Если слеша в конце нет. RewriteCond %{REQUEST_FILENAME} !-f # Не является файлом. RewriteCond %{REQUEST_URI} !\..+$ # В URL нет точки (файл). RewriteRule ^(.*)$ $1/ [L,R=301] # Добавляем слеш в конце. ############################################################################ #### Убираем index.php, если он есть в конце URL #### ############################################################################ RewriteCond %{REQUEST_METHOD} =GET # Выявляем GET запрос в URL (не POST). RewriteCond %{REQUEST_URI} ^(.*)/index\.php$ # URL cодержит index.php в конце. RewriteCond %{REQUEST_URI} !/bitrix/ [NC] RewriteCond %{REQUEST_URI} !/local/ [NC] # URL не cодержит папку ядра битрикса RewriteRule ^(.*)$ %1/ [R=301,L] # Удалить index.php из URL. ############################################################################ #### Конец общей части, далее следует собственные директивы .htaccess #### ############################################################################
Убрать повторяющиеся слеши из url
RewriteEngine On RewriteCond %{THE_REQUEST} // RewriteRule .* /$0 [R=301,L] RewriteCond %{REQUEST_URI} ^(.*)/{2,}(.*)$ RewriteRule (.*) %1/%2 [R=301,L]
Первая часть решает задачу множественных редиректов сразу после указания домена, а вторая часть - внутри url/
Замена в адресной строке символов в верхнем регистре на нижний регистр:
RewriteEngine On RewriteBase / # Если есть прописные буквы, установить HASCAPS в true и пропустить следующее правило RewriteRule [A-Z] - [E=HASCAPS:TRUE,S=1] # Пропустить этот раздел в случае, если в URL нет букв в верхнем регистре RewriteRule ![A-Z] - [S=28] # Заменить одно вхождение слова "CAP" на "cap" и перейти к следующему правилу. RewriteRule ^([^A]*)A(.*)$ $1a$2 RewriteRule ^([^B]*)B(.*)$ $1b$2 RewriteRule ^([^C]*)C(.*)$ $1c$2 RewriteRule ^([^D]*)D(.*)$ $1d$2 RewriteRule ^([^E]*)E(.*)$ $1e$2 RewriteRule ^([^F]*)F(.*)$ $1f$2 RewriteRule ^([^G]*)G(.*)$ $1g$2 RewriteRule ^([^H]*)H(.*)$ $1h$2 RewriteRule ^([^I]*)I(.*)$ $1i$2 RewriteRule ^([^J]*)J(.*)$ $1j$2 RewriteRule ^([^K]*)K(.*)$ $1k$2 RewriteRule ^([^L]*)L(.*)$ $1l$2 RewriteRule ^([^M]*)M(.*)$ $1m$2 RewriteRule ^([^N]*)N(.*)$ $1n$2 RewriteRule ^([^O]*)O(.*)$ $1o$2 RewriteRule ^([^P]*)P(.*)$ $1p$2 RewriteRule ^([^Q]*)Q(.*)$ $1q$2 RewriteRule ^([^R]*)R(.*)$ $1r$2 RewriteRule ^([^S]*)S(.*)$ $1s$2 RewriteRule ^([^T]*)T(.*)$ $1t$2 RewriteRule ^([^U]*)U(.*)$ $1u$2 RewriteRule ^([^V]*)V(.*)$ $1v$2 RewriteRule ^([^W]*)W(.*)$ $1w$2 RewriteRule ^([^X]*)X(.*)$ $1x$2 RewriteRule ^([^Y]*)Y(.*)$ $1y$2 RewriteRule ^([^Z]*)Z(.*)$ $1z$2 # Если есть буквы в верхнем регистре, начать заново с самого первого RewriteRule в файле. RewriteRule [A-Z] - [N] RewriteCond %{ENV:HASCAPS} TRUE RewriteRule ^/?(.*) /$1 [R=301,L]
Одновременный редирект с http на https и с www на без www
RewriteCond %{HTTP:X-Forwarded-Proto} !https [OR] RewriteCond %{HTTP_HOST} ^www\. [NC] RewriteCond %{HTTP_HOST} ^(?:www\.)?(.+): [NC] RewriteRule ^ https://%1%{REQUEST_URI} [L,R=301]
Разработка сайта
Подайте заявку на разработку сайта на базе готового решения от компании 1С-Битрикс или одного из партнеров компании. Максимально подробно опишите, чему будет посвящен сайт, если это интернет-магазин - что он будет продавать, нужна ли мультиязычность, будут ли разные типы цен (розница, опт, крупный опт), будет ли интеграция с 1С, будет ли выгрузка товаров на различные торговые площадки...
Сопровождение сайта
Вы можете подать заявку на сопровождение вашего сайта на базе 1С-Битрикс. Сопровождение включает в себя: проверка актуальности обновлений сайта, проверка актуальности резервной копии, консультации по сайту. Опишите в заявке, какие еще объемы планируются на сопровождении и на какой срок вы планируете заключить договор на сопровождение - мы подберем подходящий вам бюджет на сопровождение
Работы по сайту
Вы можете подать заявку на выполнение определенного объема работ по сайту. Опишите в заявке объем работ. Это может быть разработка какого-то нового функционала, доработки по имеющемуся функционалу, доработки под требования сео-специалистов. На основании заявки вам будет сформирован бюджет работ, а также названы сроки на выполнение тех или иных работ.