Файл .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]