Joomla htaccess


  •  Печать 
  • E-mail

Опубликовано: 25.01.2015 08:33

Редирект в Joomla является очень важной частью. Без него ваш сайт превратится в помойку. Пробуем составить правильный редирект для Joomla в файле htaccess

Файл .htaccess — барьер между линкопомойкой и дублями

Наверняка многие из вас видели страницу с ошибкой 404 «Страница не найдена» либо что-то похожее. В CMS Joomla уже есть несколько способов редиректа (т.е. перенаправления) с одной страницы на другую, но они не всегда работают. Да и вообще труднопонимаемы для простого пользователя. Для этого на помощь приходит 301 редирект, который осуществляет «склейку» страниц, дабы не растить огромное количество дублей. Давайте же составим универсальный способ перенаправлений для всех страниц вашего сайта.

Первоначально в каталоге сайта нужно найти файлик htaccess.txt и переименовать его в .htaccess Именно так, и никак иначе! Затем в настройках админ панели требуется поставить галки, что я указал на рисунке ниже.


Настройки seo в Joomla

Далее заходим в файлик .htaccess и начинаем продумывать правила для дальнейших перенаправлений.

1. Убираем дублирование страницы site.ru/index.php на site.ru

Либо прописываем такой код

2. Если у вашего портала несколько доменов, а вы хотите перенаправлять всегда на один, то следует использовать следующий код

3. Убираем www в заголовке вашего сайта

4. Перенаправляем страницу без суффикса .html на её аналог с суффиксом, т.е. site.ru/report на site.ru/report.html. Данный способ полезен для seo-оптимизации, бородатые дядьки так говорят. Я слушаю их советы)

5. Редиректим пользователя со страницы с GET-параметрами (параметры в адресной строке, вида ?option=1&view-true) на чистую страницу

6. Вариант редиректа при смене структуры сайта. Что-то похожее на это: site.ru/blog/raznoe/article — site.ru/blog/article

7. Приписываем всем введённым url слеш в конце, дабы уменьшить кол-во дублей (да да, и такое бывает)

А сейчас несколько моих отдельных изысков.

Почитайте комментарии, вам должно стать понятно (Если стало плохо, то пишите в комментарии, отвечу всем).


На этом пока что всё. Я описал не всё, но самое важное на мой взгляд. Кстати, недавно вышла интересная статья 10 главных отличий Joomla 3.0 от 2.5. Читайте наш блог, подписывайтесь на рассылку, и всем удачного дня! До встречи!

seo-love.ru

##
# @package      Joomla
# @copyright    Copyright (C) 2005 - 2014 Open Source Matters. All rights reserved.
# @license      GNU General Public License version 2 or later; see LICENSE.txt
##

DirectoryIndex index.php

##
# READ THIS COMPLETELY IF YOU CHOOSE TO USE THIS FILE!
#
# The line just below this section: 'Options +FollowSymLinks' may cause problems
# with some server configurations.  It is required for use of mod_rewrite, but may already
# be set by your server administrator in a way that dissallows changing it in
# your .htaccess file.  If using it causes your server to error out, comment it out (add # to
# beginning of line), reload your site in your browser and test your SEF url's.  If they work,
# it has been set by your server administrator and you do not need it set here..

out some common exploits.
# If you experience problems on your site block out the operations listed below
# This attempts to block the most common type of exploit `attempts` to Joomla!
#
# Block out any script trying to base64_encode data within the URL.
RewriteCond %{QUERY_STRING} base64_encode[^(]*([^)]*) [OR]
# Block out any script that includes a <script> tag in URL.
RewriteCond %{QUERY_STRING} (<|%3C)([^s]*s)+cript.*(>|%3E) [NC,OR]
# Block out any script trying to set a PHP GLOBALS variable via URL.
RewriteCond %{QUERY_STRING} GLOBALS(=|[|%[0-9A-Z]{0,2}) [OR]
# Block out any script trying to modify a _REQUEST variable via URL.
RewriteCond %{QUERY_STRING} _REQUEST(=|[|%[0-9A-Z]{0,2})
# Return 403 Forbidden header and show the content of the root homepage
RewriteRule .* index.php [F]
#
## End - Rewrite rules to block out some common exploits.

## Begin - Custom redirects
#
# If you need to redirect some pages, or set a canonical non-www to
# www redirect (or vice versa), place that code here.

sure those
# redirects use the correct RewriteRule syntax and the [R=301,L] flags.
#
## End - Custom redirects

##
# Uncomment following line if your webserver's URL
# is not directly related to physical file paths.
# Update Your Joomla! Directory (just / for root).
##

# RewriteBase /

## Begin - Joomla! core SEF Section.
#
 RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
#
# If the requested path and file is not /index.php and the request
# has not already been internally rewritten to the index.php script
RewriteCond %{REQUEST_URI} !^/index.php
# and the request is for something within the component folder,
# or for the site root, or for an extensionless URL, or the
# requested URL ends with one of the listed extensions
RewriteCond %{REQUEST_URI} /component/|(/[^.]*|.(php|html?|feed|pdf|vcf|raw))$ [NC]
# and the requested path and file doesn't directly match a physical file
RewriteCond %{REQUEST_FILENAME} !-f
# and the requested path and file doesn't directly match a physical folder
RewriteCond %{REQUEST_FILENAME} !-d
# internally rewrite the request to the index.php script
RewriteRule .* index.php [L]
#
## End - Joomla! core SEF Section.

<IfModule mod.

EFLATE application/x-javascript
  <IfModule mod_setenvif.c>
    BrowserMatch ^Mozilla/4 gzip-only-text/html
    BrowserMatch ^Mozilla/4.0[678] no-gzip
    BrowserMatch bMSIE !no-gzip !gzip-only-text/html
  </IfModule>
</IfModule>

# Enable expiration control
ExpiresActive On
# Default expiration: 1 hour after request
ExpiresDefault "now plus 1 hour"
# CSS and JS expiration: 1 week after request
ExpiresByType text/css "now plus 1 week"
ExpiresByType text/html "now plus 1 week"
ExpiresByType text/plain "now plus 1 week"
ExpiresByType text/javascript "now plus 1 week"
ExpiresByType application/xml "now plus 1 week"
ExpiresByType application/rss+xml "now plus 1 week"
ExpiresByType application/xhtml+xml "now plus 1 week"
ExpiresByType application/javascript.

uot;
ExpiresByType image/svg+xml "now plus 1 month"
ExpiresByType image/tiff "now plus 1 month"
ExpiresByType image/vnd.microsoft.icon "now plus 1 month"
ExpiresByType image/x-icon "now plus 1 month"
ExpiresByType image/ico "now plus 1 month"
ExpiresByType image/icon "now plus 1 month"
ExpiresByType text/ico "now plus 1 month"
ExpiresByType application/ico "now plus 1 month"
ExpiresByType image/vnd.wap.wbmp "now plus 1 month"
ExpiresByType application/vnd.wap.wbxml "now plus 1 month"
ExpiresByType application/smil "now plus 1 month"
# Audio files expiration: 1 month after request
ExpiresByType audio/basic "now plus 1 month"
ExpiresByType audio/mid "now plus 1 month"
ExpiresByType audio/midi "now plus 1 month"
ExpiresByType audio/mpeg "now plus 1 month"
Ex.

uot;
ExpiresByType video/mpeg "now plus 1 month"
ExpiresByType video/mp4 "now plus 1 month"
ExpiresByType video/quicktime "now plus 1 month"
ExpiresByType video/x-la-asf "now plus 1 month"
ExpiresByType video/x-ms-asf "now plus 1 month"


## Begin Securitycheck Pro Prevent access to .ht files
<FilesMatch "^.ht">
Order deny,allow
Deny from all
</FilesMatch>
## End Securitycheck Pro Prevent access to .ht files

## Begin File Injection Protection
RewriteCond %{REQUEST_METHOD} GET
RewriteCond %{QUERY_STRING} [a-zA-Z0-9_]=https:// [OR]
RewriteCond %{QUERY_STRING} [a-zA-Z0-9_]=(..//?)+ [OR]
RewriteCond %{QUERY_STRING} [a-zA-Z0-9_]=/([a-z0-9_.]//?)+ [NC]
RewriteRule .* - [F]
## End File Injection Protection

## /proc/self/environ? Go away!
RewriteCond %{QUERY_STRING} proc/self/environ [NC,OR]

## Prevent mime based attacks
<IfModule mod_headers.c>
Header set X-Content-Type-Options "nosniff"
</IfModule>

## Begin Securitycheck Pro Disallow Access To Sensitive Files
RewriteRule ^(htaccess.txt|configuration.php(-dist)?|joomla.xml|README.txt|web.config.txt|CONTRIBUTING.md|phpunit.xml.dist|plugin_googlemap2_proxy.php)$ - [F]
## End Securitycheck Pro Disallow Access To Sensitive Files

joomlaforum.ru

Собственно ниже представлен файл .htaccess с комментариями, пользуйтесь на здоровье 😉

# Установка кодировки сайта по умолчанию. При необходимости, закомментируйте.  # Строка решает проблему с "крякозябрами" в редакторе TinyMCE и текста лицензии при установке  # на Денвере и некоторых серверах с жестко прописанной кодировкой. Это на 99,9% работающее решение.   # После переименования этого файла htaccess.txt в .htaccess проблема решится.  # Если проблема осталась - перечитайте предыдущее предложение (возможно неправильно переименовали).    AddDefaultCharset utf-8    #####################################################  # ПРОЧТИТЕ ПОЛНОСТЬЮ, ЕСЛИ БУДЕТЕ ИСПОЛЬЗОВАТЬ ЭТОТ ФАЙЛ  #  # Строка ниже этого раздела: 'Options +FollowSymLinks' может вызвать проблему  # при некоторых конфигурациях сервера. Она необходима для использования модуля  # Apache mod_rewrite, но может быть уже настроена администратором вашего  # сервера и изменение этого параметра в .htaccess может быть запрещено.  

Если эта директива вызывает ошибку сервера, то закомментируйте строку # (добавьте символ # в начало строки), перезагрузите в браузере сайт и # протестируйте работу SEF-ссылок. Если они работают, то вам не надо ничего # менять здесь, т.к. всё уже настроено администратором сервера. # # Строки, которые можно раскомментирвать (и использовать) имеют только один #. # Строки с двумя символами ## раскомментировать не надо. В разделах, которые вы # не используете, все строки должны начинаться с символа # # ##################################################### # Может быть закомментировано, если вызывает ошибку сервера. Смотрите примечания выше. Options +FollowSymLinks # Добавляем Cache-Control в заголовок <ifModule mod_headers.c> Header set Connection keep-alive Header unset ETag FileETag None <filesMatch ".(ico|pdf|flv|jpg|jpeg|png|gif|swf)$"> Header set Cache-Control "max-age=2592000, public" </filesMatch> <filesMatch ".(css)$"> Header set Cache-Control "max-age=604800, public" </filesMatch> <filesMatch ".(js)$"> Header set Cache-Control "max-age=216000, private" </filesMatch> <filesMatch ".(xml|txt)$"> Header set Cache-Control "max-age=216000, public, must-revalidate" </filesMatch> <filesMatch ".(html|htm|php)$"> Header set Cache-Control "max-age=1, private, must-revali.

es mod_gzip_item_include file .(html?|txt|css|js|php|pl)$ mod_gzip_item_include handler ^cgi-script$ mod_gzip_item_include mime ^text/.* mod_gzip_item_include mime ^application/x-javascript.* mod_gzip_item_exclude mime ^image/.* mod_gzip_item_exclude rspheader ^Content-Encoding:.*gzip.* </ifModule> </IfModule> # Кешируем файлы у клиента <ifModule mod_expires.c> ExpiresActive On ExpiresDefault "access plus 1 seconds" ExpiresByType text/html "access plus 1 seconds" ExpiresByType image/gif "access plus 2592000 seconds" ExpiresByType image/jpeg "access plus 2592000 seconds" ExpiresByType image/png "access plus 2592000 seconds" ExpiresByType text/css "access plus 604800 seconds" ExpiresByType text/javascript "access plus 216000 seconds" ExpiresByType application/x-javascript "access plus 216000 seconds" </ifModule> # Включение mod_rewrite RewriteEngine On # Редирект с www RewriteCond %{HTTP_HOST} ^www.site.ru RewriteRule (.*) http://site.ru/$1 [R=301,L] # Вывод sitemap по кратким урл RewriteCond %{REQUEST_URI} ^(/sitemap.xml)$ RewriteRule (.*) index.php?option=com_xmap&view=xml&tmpl=component&id=1 [L] RewriteCond %{REQUEST_URI} ^(/sitemap.html)$ RewriteRule (.*) index.php?option=com_xmap&sitemap=1 [L] # 404 ошибка ErrorDocument 404 http://site.ru/404.html # Пример 301 редиректа # Redirect 301 /old_url.html http://site.ru/new_url.html ########## Начало - Правила обработки запросов для блокировки распространенных эксплоитов ## Если у вас возникли проблемы с вашим сайтом, используйте ниже описанные операции ## Они пытаются заблокировать самые распространенные эксплоиты Joomla! # ## Код запрета доступа к xml-файлам расширений (раскомментируйте для активации) #<Files ~ ".xml$"> #Order allow,deny #Deny from all #Satisfy all #</Files> ## Конец кода запрета доступа к xml-файлам # Блокировать любой запрос, пытающийся установить значение mosConfig через URL RewriteCond %{QUERY_STRING} mosConfig_[a-zA-Z_]{1,21}(=|%3D) [OR] # Блокировать любой запрос, пытающийся испортить base64_encode через URL RewriteCond %{QUERY_STRING} base64_encode.*(.*) [OR] # Блокировать любой запрос, содержащий тег <script> в URL RewriteCond %{QUERY_STRING} (<|%3C).*script.*(>|%3E) [NC,OR] # Блокировать любой запрос, пытающийся установить значение глобальных переменных PHP через URL RewriteCond %{QUERY_STRING} GLOBALS(=|[|%[0-9A-Z]{0,2}) [OR] # Блокировать любой запрос, пытающийся изменить _REQUEST переменную через URL RewriteCond %{QUERY_STRING} _REQUEST(=|[|%[0-9A-Z]{0,2}) # Перенаправлять заблокированные запросы на страницу 403 с запрещенными ошибками! RewriteRule ^(.*)$ index.php [F,L] # ########## Конец правил обработки для блокировки распространенных эксплоитов # Раскомментируйте следующую строку, если URL вашего web-сервера # не связаны напрямую с физическими путями файлов. # Обновите ваш каталог Joomla (используйте "/" для обозначения корня сервера) # RewriteBase / ########## Начало раздела SEF ядра Joomla! # RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_URI} !^/index.php RewriteCond %{REQUEST_URI} (/|.php|.html|.htm|.feed|.pdf|.raw|/[^.]*)$ [NC] RewriteRule (.*) index.php RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization},L] # ########## Конец раздела SEF ядра Joomla!

 

gaalferov.com

Директивы htaccess для защиты сайта на Joomla

Перечисленные ниже настройки разрабатывались для обычного блога на Joomla и они точно работают на хостинге REG.RU. Однако применение некоторых директив может вызвать некие проблемы в работе сайта, я это будут пояснять.

Basic HTTP аутентификация для входа в админ-панель Joomla

Первое, что необходимо сделать для повышения безопасности сайта, причем который работает на любой CMS не только на Joomla, – это добавить дополнительную HTTP аутентификацию для входа в административную часть сайта (админ-панель). Тем самым Вы значительно усложняете действия злоумышленников, которые будут проводить брутфорс атаку на сайт, т.е. подбора пароля к учетной записи администратора сайта. Также в случае таких атак дополнительная HTTP аутентификация снизит нагрузку на сервер, так как все запросы по подбору пароля будут прерваны еще на уровне работы протокола http.

Только в этом случае, как Вы понимаете, для входа в админ-панель Вам необходимо будет два раза вводить логин и пароль, причём они должны быть разные – это очень важно!

Для того чтобы добавить Basic HTTP аутентификация на вход в админ-панель Joomla необходимо создать отдельный файл .htaccess в каталоге «administrator».

Файл должен содержать следующие директивы

    AuthType Basic   AuthName "Доступ запрещён!"   AuthUserFile /Абсолютный_путь_к_файлу/.htpasswd   Require valid-user    

Где

  • AuthType Basic — тип аутентификации, т.е. базовая;
  • AuthName «Доступ запрещён!» – сообщение, которое будет появляться при обращении к админ-панели сайта;
  • «/Абсолютный_путь_к_файлу/.htpasswd» — это абсолютный путь к файлу .htpasswd, в котором хранится в зашифрованном виде логин и пароль, которые будут использоваться для аутентификации. Сгенерировать содержимое файла можно с помощью специального сервиса — http://www.htaccesstools.com/htpasswd-generator/
  • Require valid-user – директива говорит о том, что доступ разрешен только пользователям, которые предоставят логин и пароль, указанные в файле .htpasswd.

Запрет просмотра содержимого директорий

Эти и все последующие директивы мы будет писать в файле .htaccess, который расположен в корне Вашего сайта.

В данном случае сначала мы активируем RewriteEngine, а затем запрещаем просмотр содержимого директорий сайта, даже если в директории отсутствуют индексные файлы, в браузере на клиенте ничего не отобразится.

    RewriteEngine On   #Запрет просмотра содержимого директорий   IndexIgnore *    Options +FollowSymLinks All -Indexes    

Запрет доступа к файлу htaccess

Доступ к файлу htaccess должен быть запрещён, поэтому мы принудительно пропишем следующую директиву

    #Запрет доступа к файлу .htaccess   <Files .htaccess>   	order allow,deny   	deny from all    </Files>    

Блокировка инструментов взлома по USER AGENT

Следующей директивой мы блокируем известные приложения по USER AGENT, которые используются для взлома сайтов, это только небольшая часть, Вы, конечно же, можете самостоятельно дополнять данный перечень. Кстати, ниже в разделе по расширенной защите представлен другой способ блокировки вредоносных приложений по USER AGENT и там указаны дополнительные юзер агенты подобных утилит.

    #Блокируем инструменты взлома   SetEnvIf user-agent "Indy Library" stayout=1   SetEnvIf user-agent "Wget" stayout=1   SetEnvIf user-agent "libwww-perl" stayout=1   SetEnvIf user-agent "Download Demon" stayout=1   SetEnvIf user-agent "GetRight" stayout=1   SetEnvIf user-agent "GetWeb!" stayout=1   SetEnvIf user-agent "Go!Zilla" stayout=1   SetEnvIf user-agent "Go-Ahead-Got-It" stayout=1   SetEnvIf user-agent "GrabNet" stayout=1   SetEnvIf user-agent "TurnitinBot" stayout=1   deny from env=stayout    

Базовая, стандартная защита от вредоносных запросов к сайту

Здесь перечислены стандартные директивы безопасности для Joomla.

    #Базовая защита   RewriteCond %{QUERY_STRING} proc/self/environ [OR]   RewriteCond %{QUERY_STRING} mosConfig_[a-zA-Z_]{1,21}(=|%3D) [OR]   RewriteCond %{QUERY_STRING} base64_(en|de)code[^(]*([^)]*) [OR]   # RewriteCond %{QUERY_STRING} base64_encode(.*) [OR]   # RewriteCond %{QUERY_STRING} base64_decode(.*) [OR]   RewriteCond %{QUERY_STRING} (<|%3C)([^s]*s)+cript.*(>|%3E) [NC,OR]   RewriteCond %{QUERY_STRING} GLOBALS(=|[|%[0-9A-Z]{0,2}) [OR]   RewriteCond %{QUERY_STRING} _REQUEST(=|[|%[0-9A-Z]{0,2})   RewriteRule .* index.php [F]    

Дополнительная защита от вредоносных запросов к сайту

В данном случае мы еще больше фильтруем «плохие» входящие запросы, и в случае если они попадают под фильтр, блокируем их.

    #Блокируем плохие запросы   RewriteCond %{REQUEST_METHOD} GET   RewriteCond %{QUERY_STRING} [a-zA-Z0-9_]=http:// [OR]   RewriteCond %{QUERY_STRING} [a-zA-Z0-9_]=(..//?)+ [OR]   RewriteCond %{QUERY_STRING} [a-zA-Z0-9_]=/([a-z0-9_.]//?)+ [NC]   RewriteRule .* - [F]     RewriteCond %{QUERY_STRING} =PHP[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12} [NC]   RewriteRule .* - [F]    

Базовая защита от SQL инъекций

Добавляем базовую защиту от SQL инъекций

    #Простая защита от SQL инъекций   RewriteCond %{QUERY_STRING} concat[^(]*( [NC,OR]   RewriteCond %{QUERY_STRING} union([^s]*s)+elect [NC,OR]   RewriteCond %{QUERY_STRING} union([^a]*a)+ll([^s]*s)+elect [NC]   RewriteRule .* - [F]    

Запрет на визуальный просмотр расположения позиций модулей в шаблоне

Если добавить к адресу сайта в строке запроса ?tp=1, то можно посмотреть все позиции, на которых могут располагаться модули в данном шаблоне, данную возможность лучше отключать, например следующим образом

    #Запрещаем визуальный просмотр расположения позиций модулей   RewriteCond %{QUERY_STRING} (^|&)tmpl=(component|system) [NC]   RewriteRule .* - [L]   RewriteCond %{QUERY_STRING} (^|&)t(p|emplate|mpl)= [NC]   RewriteRule .* - [F]    

Защита системных файлов и каталогов

Для того чтобы ограничить доступ к системным файлам и каталогам, пишем следующие директивы

    #Запрещаем доступ к htaccess.txt, configuration.php, configuration.php-dist и php.ini   RewriteRule ^(htaccess.txt|configuration.php(-dist)?|php.ini)$ - [F]     #Защищаем системные файлы и папки   RewriteRule ^administrator/?$ - [L]   RewriteRule ^administrator/index.(php|html?)$ - [L]   RewriteRule ^administrator/index[23].php$ - [L]   RewriteRule ^administrator/(components|modules|templates|images|plugins)/([^/]+/)*([^/.]+.)+(jp(e?g|2)?|   png|gif|bmp|css|js|swf|html?|mp(eg?|[34])|avi|wav|og[gv]|xlsx?|docx?|pptx?|zip|rar|pdf|xps|txt|7z|svg|od[tsp]|   flv|mov|ico)$ - [L]   RewriteRule ^administrator/ - [F]     RewriteRule ^xmlrpc/(index.php)?$ - [L]   RewriteRule ^xmlrpc/ - [F]     RewriteRule ^includes/js/ - [L]   RewriteRule ^(cache|includes|language|libraries|logs|tmp)/ - [F]    

Ограничение доступа к файлам и каталогам, которые доступны пользователю

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

Однако некоторые шаблоны и расширения могут требовать прямого доступа к PHP файлам, поэтому в таких случаях у Вас могут возникнуть проблемы в работе сайта, но так делают только не очень ответственные разработчики шаблонов и расширений. Таким образом, после того как Вы пропишите данные директивы, проверяйте работоспособность сайта, и если все хорошо, то обязательно оставляйте данное ограничение.

    #Защищаем файлы и папки, которые доступны пользователю   RewriteRule ^(components|modules|plugins|templates)/([^/]+/)*([^/.]+.)+(jp(e?g|2)?|png|gif|bmp|css|js|   swf|html?|mp(eg?|[34])|avi|wav|og[gv]|xlsx?|docx?|pptx?    |zip|rar|pdf|xps|txt|7z|svg|od[tsp]|flv|mov|ico)$ - [L]   RewriteRule ^(components|modules|plugins|templates)/ - [F]    

Запрет запуска сторонних PHP файлов для всего сайта

В данном случае мы запретим запускать сторонние PHP файлы для всего сайта, если, конечно, они явно не разрешены.

    #Запрет запуска сторонних PHP файлов для всего сайта    RewriteCond %{REQUEST_FILENAME} .php$   RewriteCond %{REQUEST_FILENAME} !/index[23]?.php$   RewriteCond %{REQUEST_FILENAME} !/fpa-[a-z]{2}.php   RewriteCond %{REQUEST_FILENAME} -f   RewriteRule ^([^/]+/)*([^/.]+.)+php$ - [F]    

Расширенная защита от вредоносных запросов и SQL инъекций

Для более эффективной защиты от вредоносных запросов и SQL инъекций можно в htaccess прописать следующие директивы, в которых мы уже будем проверять не только строку запроса, но и тип запроса, и юзер агент приложения, с помощью которого осуществляется обращение к сайту. С помощью данных директив мы блокируем известные популярные программы-скрипты, которые используются для взлома сайтов.

Как показывает практика, обычные «нормальные» запросы к сайту блокироваться не будут.

    #Расширенная защита от плохих запросов   ServerSignature Off   RewriteCond %{REQUEST_METHOD} ^(HEAD|TRACE|DELETE|TRACK) [NC,OR]   RewriteCond %{THE_REQUEST} (\r|\n|%0A|%0D) [NC,OR]   RewriteCond %{HTTP_REFERER} (<|>|’|%0A|%0D|%27|%3C|%3E|%00) [NC,OR]   RewriteCond %{HTTP_COOKIE} (<|>|’|%0A|%0D|%27|%3C|%3E|%00) [NC,OR]   RewriteCond %{REQUEST_URI} ^/(,|;|:|<|>|”>|”<|/|\..\).{0,9999} [NC,OR]   RewriteCond %{HTTP_USER_AGENT} ^$ [OR]   RewriteCond %{HTTP_USER_AGENT} ^(java|curl|wget) [NC,OR]   RewriteCond %{HTTP_USER_AGENT} (winhttp|HTTrack|clshttp|archiver|loader|email|harvest|extract|grab|miner) [NC,OR]   RewriteCond %{HTTP_USER_AGENT} (libwww-perl|curl|wget|python|nikto|scan) [NC,OR]   RewriteCond %{HTTP_USER_AGENT} (<|>|’|%0A|%0D|%27|%3C|%3E|%00) [NC,OR]     #Дополнительная защита от SQL инъекций   RewriteCond %{QUERY_STRING} (;|<|>|’|”|)|%0A|%0D|%22|%27|%3C|%3E|%00).*(/*|   union|select|insert|cast|set|declare|drop|update|md5|benchmark) [NC,OR]   RewriteCond %{QUERY_STRING} ../.. [OR]   RewriteCond %{QUERY_STRING} (localhost|loopback|127.0.0.1) [NC,OR]   RewriteCond %{QUERY_STRING} .[a-z0-9] [NC,OR]   RewriteCond %{QUERY_STRING} (<|>|’|%0A|%0D|%27|%3C|%3E|%00) [NC]   RewriteRule .* index.php [F]    

Блокировка плохих поисковых ботов по USER AGENT

В случае если у Вас неоправданно возросла нагрузка на сервер, то Вы можете немного снизить эту нагрузку путем блокировки ненужных поисковых ботов. Например, после анализа логов веб-сервера Вы обнаружили, что некоторые поисковые боты слишком настойчиво посещают Ваш сайт, и если это не основные роботы поисковых систем или это роботы неизвестных Вам систем, то можете смело их блокировать следующим способом (Подробно про такую блокировку я рассказывал в материале «Как заблокировать поисковых ботов по User-Agent с помощью htaccess?»).

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

    #Определяем плохих поисковых ботов   RewriteEngine on   SetEnvIfNoCase User-Agent "DotBot/1.1" bad_bot   SetEnvIfNoCase User-Agent "SemrushBot/2~bl" bad_bot   SetEnvIfNoCase User-Agent "AhrefsBot/5.2" bad_bot     #Блокируем IP адреса и плохие поисковые боты   <Limit GET POST PUT HEAD>   order allow,deny   allow from all   deny from env=bad_bot   Deny from 1.1.1.1   </LIMIT>    

Где вместо 1.1.1.1 напишите IP адрес злоумышленника, которого Вы хотите заблокировать.

Также если кому интересно, как можно очень эффективно, быстро и просто снизить нагрузку на CPU хостинга, если у Вас WordPress, можете почитать материал — «Оптимизация WordPress – быстрый способ снизить нагрузку на CPU хостинга».

Если Вы знаете ещё дополнительные способы защиты сайта на Joomla, которые можно прописать в файле htaccess, то делитесь в комментариях, спасибо!

У меня все, надеюсь, материал был Вам полезен, пока!

info-comp.ru

Указание принудительной кодировки сайта через htaccess.

Это актуально для многих CMS, в том числе и для Joomla.
Для указания кодировки достаточно добавить такую строчку в самом начале файла:

AddDefaultCharset utf-8

Склейка домена при помощи htaccess.

Эту операцию нужно выполнять сразу после переноса на хостинг.
Называется эта директива: 301 редирект — «перемещён навсегда».
Это поможет сайту правильно работать и определит главное зеркало для поисковой системы.
Чтобы ваш сайт был доступен только с www в htaccess указываем такие строки (после RewriteEngine On), пример на этом сайте:

RewriteCond %{HTTP_HOST} ^joomlatown.net$ [NC]
RewriteRule ^(.*)$ http://www.joomlatown.net/$1 [R=301,L]

Если хотите наоборот, чтобы ваш сайт был доступен только БЕЗ www, значит пишем так:

RewriteCond %{HTTP_HOST} ^www.joomlatown.net$ [NC]
RewriteRule ^(.*)$ http://joomlatown.net/$1 [R=301,L]

Вместо joomlatown.net подставьте свой домен.

Перенаправление при помощи htaccess.

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

Redirect 301 /старый_URL http://новый_URL

Обратите внимание, что старый URL имеет относительный вид, а новый URL (куда будет перенапрвлен пользователь) имеет абсолютный вид с http, и между двумя URL’ами стоит пробел.

Запрет доступа к сайту.

Это нужная опция, позволяет защитить ваш сайт от нежелательных посетителей имеющих определённый IP-адрес, либо закрыть сайт совсем, оставив доступ только для нужных IP.

Если вы хотите полностью запретить доступ к сайт, то в  самом начале пишем так:

Order Deny,Allow
Deny from all 

Если хотите запретить доступ всем, кроме своего IP, то это будет выглядеть так:

Order Deny,Allow
Deny from all
Allow from 78.106.133.204

Определить свой IP можно по этой ссылке >>

Если хотите запретить доступ для определённых IP, то будут такие строки:

Order Deny,Allow
Deny from 62.173.147.224
Deny from 220.250.58.171 

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

запрет доступа по IP при помощи htaccess

Кеширование и GZIP сжатие файлов при помощи htaccess.

Мегаполезная вещь! После этого оценка Yslow сразу возрастает.
Для этого пишем такие строки:

<FilesMatch ".(ico|pdf|flv|jpg|jpeg|png|gif|js|css|swf)$">
SetOutputFilter DEFLATE
ExpiresActive on
ExpiresDefault "access plus 1 year"
Header set Cache-Control "private, must-revalidate"

Теперь немного объясню, что это обозначает.

Для начала указывается список файлов для работы (FilesMatch).
Затем включается механизм сжатия DEFLATE, он работает с указанными файлами.
После включается механизм кеширования, по умолчанию файлы кешируются на 1 год.
Далее включается контроль кеширования файлов, который говорит что хранить файлы нужно в кеше браузера и всегда проверять на наличие изменений.

Для того чтобы работала проверка обновлений включается механизм Etag, для этого нужно указать такую строчку:

FileETag MTime Size 

Теперь, если будуте проверять при помощи Yslow не забудте почистить кеш вашего браузера.
Иначе изменений видно не будет.

Желаю всего хорошего! 

joomlatown.net

Файлы htaccess.txt и web-config.txt

В коробочной версии Joomla, есть два текстовых файла, назначение, которых не понятно с первого взгляда. Это файлы htaccess.txt и web-config.txt. Расположены они в каталоге CMS Joomla, а после установки Joomla, оказываются в корневом каталоге сайта. Разберем назначение файлов htaccess.txt и web-config.txt.

htaccess web config joomla3 foto1

Чтобы понять назначение файлов htaccess.txt и web-config.txt. нужно вспомнит, как устроен сервер хостинга, дающего место под размещение сайта.

В сборку любого сервера, будь то хостинг (shared hosting), сервер VDS (VPS Hosting), локальный сервер (LAMP, WAMP) на вашем компьютере, входит веб-сервер, позволяющий открывать страницы сайтов по протоколу HTTP. На практике в сборке используют три основных веб-сервера (программы):

  1. Веб-сервер, Apache для платформы Linux. Этот сервер исторически лидирует в сборках.
  2. Веб-сервер, Nginx для платформы Linux.
  3. Сборка Apache+ Nginx.
  • а также, IIS, для платформы Windows.

Здесь мы подошли к центральной части статьи. Файлы htaccess.txt и web-config.txt предназначены для управления работой веб-сервреров Apache и IIS Windows соответственно.

Для чего предназначены файлы htaccess.txt и web-config.txt

Файлы htaccess.txt и web-config.txt предназначены для управления работой веб-сервреров Apache и IIS Windows означает, что с помощью специальных директорий прописанных в этих файлах, можно «давать команды» этим веб-серверам и руководить их работой. Например, можно закрыть определенные URL адреса, можно создать «черные списки» для IP посетителей, можно организовать перенаправление или склейку зеркал и т.д.

Как подготовить файлы htaccess.txt и web-config.txt к работе

Чтобы файлы htaccess.txt и web-config.txt выполняли свои задачи, нужно сразу после установки CMS Joomla, переименовать эти файлы:

  • Если у вас на сервере стоит Apache, то переименовываем htaccess.txt в .htaccess (точка вначале);
  • Если работаете на Windows, то переименовываете web-config.txt в web-config.

htaccess web config joomla3 foto2

Что будет, если не использовать файлы .htaccess и web-config

Если не использовать файлы .htaccess и web-config, то есть, просто их не переименовывать, то вы не сможете:

  • Использовать базовую SEO настройку Joomla «Перенаправление»;
  • Не сможете работать ни с одним SEO расширением Joomla (Artio JoomSEF, SH404).

Как влияют файлы .htaccess и web-config на безопасность сайта

Считается, что любой сайт управляющий поведением серверов потенциально является целью взлома. Поэтому, в рамках общей защиты сайта joomla, нужно установить права CHMOD на эти файлы 644. Напомню:

  • В целях безопасности Joomla 3 никогда не используйте CHMOD 777, ни для одного каталога и файла системы.
  • На файл конфигурации configuration.php ставим CHMOD 444, после установки всех нужных расширений и окончания настройки сайта.
  • На другие каталоги ставим CHMOD 755, на все другие файлы CHMOD 644.

И последнее. Даже если вы не используйте перенаправление и SEF ссылки, обязательно переименуйте файл htaccess.txt в .htaccess.  

©Joomla3-x.ru

joomla3-x.ru

Файл htaccess для Joomla

Ошибка «Strict Standards: Non-static method JLoader::import () should not be called statically in»

Для того чтобы не показывались ошибки

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

<IfModule mod_rewrite.c>
Options +FollowSymLinks
RewriteEngine on
RewriteCond %{HTTP_HOST} ^www.site.ru$ [NC]
RewriteRule ^(.*)$ http://site.ru/$1 [R=301,L]
</IfModule>

 

2. Убираем слеши в Joomla со всех адресов.

RewriteBase /
RewriteCond %{HTTP_HOST} (.*)
RewriteCond %{REQUEST_URI} /$ [NC]
RewriteRule ^(.*)(/)$ $1 [L,R=301]]

 

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

Идеальный htaccess для Joomla

<IfModule mod_rewrite.c>
Options +FollowSymLinks
RewriteEngine on
RewriteCond %{HTTP_HOST} ^www.site.ru$ [NC]
RewriteRule ^(.*)$ http://site.ru/$1 [R=301,L]
</IfModule>

<IfModule mod_deflate.c>
AddOutputFilterByType DEFLATE text/html
AddOutputFilterByType DEFLATE application/javascript
AddOutputFilterByType DEFLATE text/javascript
AddOutputFilterByType DEFLATE text/css
<IfModule mod_setenvif.c>
BrowserMatch ^Mozilla/4 gzip-only-text/html
BrowserMatch ^Mozilla/4.0[678] no-gzip
BrowserMatch bMSIE !no-gzip !gzip-only-text/html
</IfModule>
</IfModule>

FileETag MTime Size
<ifmodule mod_expires.c>
<filesmatch «.(jpg|jpeg|gif|png|ico|css|js)$»>
ExpiresActive on
ExpiresDefault «access plus 1 month»
</filesmatch>
</ifmodule>

# // Ошибка после установки плагина Yandex
php_value error_reporting 1

# Чтобы загружались большие файлы
php_value upload_max_filesize 20M
php_value post_max_size 20M
php_value max_execution_time 200
php_value max_input_time 200

# // Защита папки images от внедрения в нее вирусов

php_flag engine  off

RemoveHandler .phtml .php .php3 .php4 .php5 .php6 .phps
.cgi .exe .pl .asp .aspx .shtml .shtm .fcgi .fpl .jsp .htm .html .wml
AddType application/x-httpd-php-source .phtml .php .php3
.php4 .php5 .php6 .phps .cgi .exe .pl .asp .aspx .shtml .shtm
.fcgi .fpl .jsp .htm .html .wml

 

RewriteCond %{QUERY_STRING} mosConfig_[a-zA-Z_]{1,21}(=|%3D) [OR]
# Block out any script trying to base64_encode crap to send via URL
RewriteCond %{QUERY_STRING} base64_encode.*(.*) [OR]
# Block out any script that includes a <script> tag in URL
RewriteCond %{QUERY_STRING} (<|%3C).*script.*(>|%3E) [NC,OR]
# Block out any script trying to set a PHP GLOBALS variable via URL
RewriteCond %{QUERY_STRING} GLOBALS(=|[|%[0-9A-Z]{0,2}) [OR]
# Block out any script trying to modify a _REQUEST variable via URL
RewriteCond %{QUERY_STRING} _REQUEST(=|[|%[0-9A-Z]{0,2})
# Send all blocked request to homepage with 403 Forbidden error!
RewriteRule ^(.*)$ index.php [F,L]

########## Begin — Joomla! core SEF Section
#
AddDefaultCharset utf-8 
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} !^/index.php
RewriteCond %{REQUEST_URI} (/|.php|.html|.htm|.feed|.pdf|.raw|/[^.]*)$ [NC]
RewriteRule (.*) index.php
RewriteRule .* — [E=HTTP_AUTHORIZATION:%{HTTP:Authorization},L]
#
########## End — Joomla! core SEF Section

########## Begin — Rewrite rules to block out some common exploits
## If you experience problems on your site block out the operations listed below
## This attempts to block the most common type of exploit `attempts` to Joomla!
#
## Deny access to extension xml files (uncomment out to activate)
#<Files ~ «.xml$»>
#Order allow,deny
#Deny from all
#Satisfy all
#</Files>
## End of deny access to extension xml files
RewriteCond %{QUERY_STRING} mosConfig_[a-zA-Z_]{1,21}(=|%3D) [OR]
# Block out any script trying to base64_encode crap to send via URL
RewriteCond %{QUERY_STRING} base64_encode.*(.*) [OR]
# Block out any script that includes a <script> tag in URL
RewriteCond %{QUERY_STRING} (<|%3C).*script.*(>|%3E) [NC,OR]
# Block out any script trying to set a PHP GLOBALS variable via URL
RewriteCond %{QUERY_STRING} GLOBALS(=|[|%[0-9A-Z]{0,2}) [OR]
# Block out any script trying to modify a _REQUEST variable via URL
RewriteCond %{QUERY_STRING} _REQUEST(=|[|%[0-9A-Z]{0,2})
# Send all blocked request to homepage with 403 Forbidden error!
RewriteRule ^(.*)$ index.php [F,L]
#
########## End — Rewrite rules to block out some common exploits
## Can be commented out if causes errors, see notes above.

rtr24.ru

Для чего используется htaccess?

В большинстве случаев файл htaccess используется для создания переадресации или другими словами 301 редиректа с одной страницы сайта на другую. Но это далеко не все возможности данного файла, так же с его помощью можно указать веб-серверу (Apache и подобных серверов) о необходимости сжимать страницы, включать кэширование, управлять доступом к каталогам и многое другое.

Так как для пользователей, которые разместили свои сайты на виртуальном хостинге, нет возможности напрямую конфигурировать веб-сервер (так как это затронет все размещенные на нем сайты), то для конфигурации сервера для каждого сайта в отдельности и был придуман файл htaccess.
Где должен располагаться файл htaccess?

После установки Joomla 3 на локальном компьютере, либо на хостинге в корневой директории сайта уже содержится файл htaccess.txt, но для того чтобы он начал работать его необходимо переименовать. Имя рабочего файла должно начинаться с точки, далее имя «htaccess» и все, расширения «.txt» быть не должно. В результате файл должен иметь имя «.htaccess».

По поводу места его расположения, тут все просто – если файл лежит в корневом каталоге сайта, то его действия распространяются на весь сайт. Но никто не запрещает поместить файл htaccess во вложенные каталоги, тем самым действие файла будет применяться только к ним и вложенным папкам. Так же возможно использование нескольких файлов htaccess в разных папках, к примеру, в корне сайта и во вложенной папке. В этом случае действие основного файла будет распространяться на весь сайт, за исключением того каталога в котором лежит собственный файл конфигурации.

Какие директивы содержит файл htaccess?

Директив может быть множество, в базовом варианте файл htaccess, который уже присутствует в Joomla 3, содержится (если убрать все комментарии) примерно следующий код:


На этом рассмотрение базового файла htaccess законченно. Теперь вы знаете что для того чтобы файл начал раздавать указания веб-серверу его для начала необходимо переименовать. Базовый файл htaccess вполне работоспособен и для начала вполне подойдет для работы.

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

joom4all.ru


You May Also Like

About the Author: admind

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.