Файл .htaccess (Joomla)

 

   Оригинальный текст файла

   Текст с комментариями на русском языке

   Примеры дополнительных кодов для файла .htaccess

 


 Обратите внимание!

Во избежании некорректной работы сайта внесение любых дополнительных переадресаций следует делать после "RewriteBase" и до  блока "Begin - Joomla! core SEF Section" т.е. сразу после 55 строки:

 55    # RewriteBase /

сюда можно вставить свои правила переадресации

 56  ## Begin - Joomla! core SEF Section.

...

 70   ## End - Joomla! core SEF Section


Файл .htaccess (оригинал), который загружается вместе с CMS Joomla.
Ниже вы можете просмотреть этот же файл, но с комментариями на русском языке.

   1     ##
   2     # @package Joomla
   3    # @copyright Copyright (C) 2005 - 2018 Open Source Matters. All rights reserved.
   4    # @license GNU General Public License version 2 or later; see LICENSE.txt
   5    ##
   6    ##
   7    # READ THIS COMPLETELY IF YOU CHOOSE TO USE THIS FILE!
   8    #
   9    # The line 'Options +FollowSymLinks' may cause problems with some server configurations. 
 10    # It is required for the use of mod_rewrite, but it may have already been set by your  
 11    # server administrator in a way that disallows changing it in this .htaccess file .
 12    # If using it causes your site to produce an error, comment it out (add # to t he
 13    # beginning of the line), reload your site in your browser and test your sef ur ls. If
 14    # they work, then it has been set by your server administrator and you do no t need to  
 15    # set it here .
 16    # #
 17     ## No directory listings
 18     <IfModule autoindex>
 19    IndexIgnore *
 20   </IfModule>
 21    ## Can be commented out if causes errors, see notes above.
 22    Options +FollowSymlinks
 23    Options -Indexes
 24    ## Mod_rewrite in use.
 25    RewriteEngine On
 26    ## Begin - Rewrite rules to block out some common exploits.
 27   # If you experience problems on your site then comment out the operations listed
 28    # below by adding a # to the beginning of the line.
 29    # This attempts to block the most common type of exploit `attempts` on Joomla!
 30   #
 31    # Block any script trying to base64_encode data within the URL.
 32    RewriteCond %{QUERY_STRING} base64_encode[^(]*\([^)]*\) [OR]
 33    # Block any script that includes a <script> tag in URL.
 34    RewriteCond %{QUERY_STRING} (<|%3C)([^s]*s)+cript.*(>|%3E) [NC,OR]
 35    # Block any script trying to set a PHP GLOBALS variable via URL.
 36    RewriteCond %{QUERY_STRING} GLOBALS(=|\[|\%[0-9A-Z]{0,2}) [OR]
 37    # Block any script trying to modify a _REQUEST variable via URL.
 38    RewriteCond %{QUERY_STRING} _REQUEST(=|\[|\%[0-9A-Z]{0,2})
 39    # Return 403 Forbidden header and show the content of the root home page
 40    RewriteRule .* index.php [F]
 41    #
 42    ## End - Rewrite rules to block out some common exploits.
 43    ## Begin - Custom redirects
 44    #
 45    # If you need to redirect some pages, or set a canonical non-www to
 46    # www redirect (or vice versa), place that code here. Ensure those
 47   # redirects use the correct RewriteRule syntax and the [R=301,L] flags.
 48   #
 49    ## End - Custom redirects
 50    ##
 51    # Uncomment the following line if your webserver's URL
 52    # is not directly related to physical file paths.
 53    # Update Your Joomla! Directory (just / for root).
 54    ##
 55    # RewriteBase /
 56   ## Begin - Joomla! core SEF Section.
 57    #
 58    RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
 59    #
 60    # If the requested path and file is not /index.php and the request
 61    # has not already been internally rewritten to the index.php script
 62    RewriteCond %{REQUEST_URI} !^/index\.php
 63    # and the requested path and file doesn't directly match a physical file
 64    RewriteCond %{REQUEST_FILENAME} !-f
 65    # and the requested path and file doesn't directly match a physical folder
 66    RewriteCond %{REQUEST_FILENAME} !-d
 67    # internally rewrite the request to the index.php script
 68    RewriteRule .* index.php [L]
 69    #
 70    ## End - Joomla! core SEF Section

 

Файл с комментариями на русском языке

 Применение кириллицы допускается только в комментариях! Использовать кириллицу в основном коде нельзя

Для наглядности и удобства изучения основной код документа (т.е. то, что непосредственно считывает сервер) выделен цветом.

   1    ##
   2    # @package Joomla
   3    # @copyright Copyright (C) 2005 - 2018 Open Source Matters. All rights reserved.
   4    # @license GNU General Public License version 2 or later; see LICENSE.txt
   5    ##
   6   
   7    ## Если нет каталогов:
   8    <IfModule autoindex>
   9    IndexIgnore *
 10    </IfModule>

 11 
 12    ##
 13    #ПРОЧИТАЙТЕ ЭТО ПОЛНОСТЬЮ, ЕСЛИ ВЫ ХОТИТЕ ИСПОЛЬЗОВАТЬ ЭТОТ ФАЙЛ!
 14    #
 15    # Для использования модуля Rewrite опция FollowSymlinks должна быть включена, но имейте
 16    # в виду, что данная опция может вызвать проблемы с некоторыми конфигурациями сервера!
 17    # Так же имейте в виду: вполне возможно, данная директива уже была установлена вашим
 18    # администратором сервера таким образом, что запрещает изменять её в этом файле (в целях
 19    # безопасности).
 20    # Если в результате использования сайта возникла ошибка, закомментируйте ее (добавьте # в
 21    # начало строки), перезагрузите сайт и протестируйте ЧПУ всех URL. Если они работают,
 22    # то настройки опций были установлены администратором сервера, и вам не нужно здесь 
 23    # ничего устанавливать или менять. 
 24    ##
 25 
 26    ## Подключение и отключение опций
 27    #
 28    Options +FollowSymlinks
 29    Options -Indexes
 30 
 31    ## Запуск модуля Rewrite:
 32    #
 33    RewriteEngine On
 34 
 35    ##
 36    # Правила, необходимые чтобы заблокировать некоторые распространенные эксплойты.
 37    # Если возникли проблемы с сайтом, то попробуйте закомментировать перечисленные
 38    # ниже операции, добавив # в начало строки.
 39    # Применяющиеся директивы RewriteCond по порядку:
 40    # 1. Любой сценарий, пытающийся с помощью base64 кодировать данные в URL.
 41    # 2. Любой сценарий, содержащий тег <script> в URL.
 42    # 3. Любой скрипт, пытающийся установить переменную PHP GLOBALS через URL.
 43    # 4. Любой сценарий, пытающийся изменить переменную _REQUEST через URL.
 44    # При соответствии условий в RewriteCond запусается правило в директиве RewriteRule,
 45   # которое выдаёт код 403 - запрет доступа:
 46    #
 47    RewriteCond %{QUERY_STRING} base64_encode[^(]*\([^)]*\) [OR]
 48    RewriteCond %{QUERY_STRING} (<|%3C)([^s]*s)+cript.*(>|%3E) [NC,OR]
 49    RewriteCond %{QUERY_STRING} GLOBALS(=|\[|\%[0-9A-Z]{0,2}) [OR]
 50    RewriteCond %{QUERY_STRING} _REQUEST(=|\[|\%[0-9A-Z]{0,2})
 51    RewriteRule .* index.php [F] 
 52    ##
 53 
 54    ## Раскомментируйте (удалите знак "#") следующую строку, если URL вашего веб-сервера
 55    # не имеет прямого отношения к физическим путям файлов.
 56    # Обновите Joomla! Каталог.
 57    # RewriteBase /
 58    ##
 59 
 60    ## Основная секция ЧПУ (SEF):
 61    #
 62    RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
 63    #
 64    # Если запрошенный путь и файл не /index.php и запрос еще не был внутренне переписан
 65    # в index.php скрипт, запрошенный путь и файл не соответствуют физическому файлу,
 66    # а так же запрошенный путь и файл напрямую не соответствуют физической папке,
 67    # то переписываем запрос в index.php скрипт:
 68    #
 69    RewriteCond %{REQUEST_URI} !^/index\.php
 70    RewriteCond %{REQUEST_FILENAME} !-f
 71    RewriteCond %{REQUEST_FILENAME} !-d
 72    RewriteRule .* index.php [L]
 73    #
 74    ## End - Joomla! core SEF Section

 Обратите внимание на 57 строку: имеющийся в ней код выделен красным цветом. При установке Joomla данная строка по умолчанию выглядит именно так, т.е. перед RewriteBase установлен символ #, поэтому данную строку сервер игнорирует. При необходимости вы можете эту строку сделать основным кодом (см. комментарии перед строкой).

 

Примеры дополнительных кодов для файла .htaccess

 При необходимости вы можете добавлять в этот файл дополнительные кодовые конструкции. При добавлении таких конструкций всегда внимательно выбирайте место, куда будет вставлен код, иначе, в лучшем случае, этот код работать не будет, а в худшем возникнут проблемы с работой всего сайта.

Рассмотрим два примера установка перенаправлений (Redirect). Это наиболее распространённый вариант добавления дополнительного кода. Такой код в этом файле нужно вставлять начиная со строки 43 оригинального кода (или со строки 53 кода с комментариями на русском языке).

Вот простой пример такого кода, применяющийся для указания главного зеркала сайта (ранее применяемый код в файлах robots.txt больше не работает!):


 1    # Склейка зеркал
 2    # RewriteCond %{HTTP_HOST} ^my_site.ru$ [NC]
 3    # RewriteRule ^(.*)$ https://xn--80arbjktj.xn--p1ai/ [R=301,L]

Или другой вариант, более сложный, но позволяющий не просто перенаправлять определённые запросы на главную страницу главного зеркала (как в предыдущем примере), а склеивать зеркала, исправлять адреса и при этом перенаправлять на запрошенную страницу главного зеркала:

 
 1    # Склейка зеркал и исправление адресов
 2    RewriteCond %{HTTP_HOST} ^www\.my_site.ru$ [NC,OR]
 3    RewriteCond %{HTTP_HOST} ^my_site.ru$ [NC,OR]
 4    RewriteCond %{HTTP_HOST} ^www\.xn--80arbjktj.xn--p1ai$ [NC]
 5    RewriteRule ^(.*)$ https://xn--80arbjktj.xn--p1ai/$1 [R=301,L]