Доброе время суток.
Прописал файл .htaccess и нужно мнение по поводу правильности и корректности кода.
Что добавить, что исправить? Желательно с объяснением или примерами.
Большое спасибо, всем кто отзовется.
DirectoryIndex index.php
# Запрещаем листинг директорий.
Options -indexes
<IfModule mod_rewrite.c>
RewriteEngine On
# Директива включает редиректы.
RewriteBase /
# Без директивы (.*) = /$1 будет /var/wwww/site/web/$1 с директивой = /$1
Options +FollowSymLinks
# Разрешает переход по символическим ссылкам.
php_flag display_errors off
# запретить отображение ошибок (требование монитора качества)
php_flag allow_url_fopen off
# Отключаем вывод информации о сервере.
ServerSignature Off
php_flag expose_php Off
php_value mbstring.func_overload "7"
############################################################################
#### Выбор основного зеркала (без www) ####
############################################################################
# Удалить www
RewriteCond %{ENV:HTTPS} on
# Если включен https
RewriteRule .* - [E=SSL:s]
# То создаем переменную ssl с текстом s
RewriteCond %{HTTP_HOST} ^www\.(.*) [NC]
# Проверяем, содержит ли домен www в начале URL.
RewriteRule ^(.*)$ http%{ENV:SSL}://%1/$1 [R=301,L]
# Перенаправляем удаляем www
############################################################################
#### Перенаправляем протокол http на https ####
############################################################################
RewriteCond %{HTTP:X-Forwarded-Proto} !=https
# Проверяем наличие https в URL.
RewriteRule .* https://%{SERVER_NAME}%{REQUEST_URI} [R=301,L]
# Перенаправляем протокол на http.
#
############################################################################
#### Убираем index.php, если он есть в конце URL ####
############################################################################
RewriteCond %{REQUEST_URI} ^(.*)/index\.php$
# URL cодержит index.php в конце.
RewriteCond %{REQUEST_METHOD} =GET
# Выявляем GET запрос в URL (не POST).
RewriteRule ^(.*)$ %1/ [R=301,L]
# Удалить index.php из URL.
############################################################################
#### Убираем повторяющиеся слеши (/) в URL ####
############################################################################
RewriteCond %{THE_REQUEST} //
# Проверяем, повторяется ли слеш (//) более двух раз.
RewriteCond %{QUERY_STRING} !http(s|)://
# Убедимся что это не урл в GET
RewriteRule .* /$0 [R=301,L]
# Исключаем все лишние слеши.
############################################################################
#### Убираем слеши в конце URL для статических файлов (содержит точку) ####
############################################################################
RewriteCond %{REQUEST_URI} \..+$
# Если файл содержит точку.
RewriteCond %{REQUEST_FILENAME} !-d
# И это не директория.
RewriteCond %{REQUEST_FILENAME} -f
# Является файлом.
RewriteCond %{REQUEST_URI} ^(.+)/$
# И в конце URL есть слеш.
RewriteRule ^(.+)/$ /$1 [R=301,L]
# Исключить слеш.
# Страницы сайта
RewriteRule ^blog$ /index/blog/blog? [L]
RewriteRule ^blog/$ /index/blog/blog? [L]
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(([^/]+/)*[^.]+)$ /$1.php [L]
RewriteCond %{REQUEST_URI} ^/index$ [OR]
RewriteCond %{REQUEST_URI} ^/index[.]+(\w+)$
RewriteRule . / [R=301,L]
# Личеры идут лесом
# https://ru.wikipedia.org/wiki/BitTorrent_(%D0%BF%D1%80%D0%BE%D1%82%D0%BE%D0%BA%D0%BE%D0%BB)#%D0%A2%D0%B5%D1%80%D0%BC%D0%B8%D0%BD%D0%BE%D0%BB%D0%BE%D0%B3%D0%B8%D1%8F
RewriteCond %{HTTP_REFERER} !^http(s)?://(www\.)?yapro.ru [NC]
RewriteRule \.(jpg|jpeg|png|gif|ico|css|js)$ - [NC,F,L]
</IfModule>
# ------------------------------------------------------------------------------
# | ERROR |
# ------------------------------------------------------------------------------
ErrorDocument 403 /index/error/403.php
ErrorDocument 404 /index/error/404.php
ErrorDocument 410 /index/error/410.php
ErrorDocument 500 /index/error/500.php
ErrorDocument 505 /index/error/505.php
# ------------------------------------------------------------------------------
# | Изображения с поддержкой CORS |
# ------------------------------------------------------------------------------
# Отправлять заголовок CORS для изображений, когда браузер запрашивает его.
# https://developer.mozilla.org/en/CORS_Enabled_Image
# http://blog.chromium.org/2011/07/using-cross-domain-images-in-webgl-and.html
# http://hacks.mozilla.org/2011/11/using-cors-to-load-webgl-textures-from-cross-domain-images/
<IfModule mod_setenvif.c>
<IfModule mod_headers.c>
<FilesMatch "\.(gif|ico|jpe?g|png|svg|svgz|webp)$">
SetEnvIf Origin ":" IS_CORS
Header set Access-Control-Allow-Origin "*" env=IS_CORS
</FilesMatch>
</IfModule>
</IfModule>
# ##############################################################################
# # БЕЗОПАСНОСТЬ #
# ##############################################################################
# Закрывает доступ к служебным папкам и файлам, которые начинаются на . или ~.
# Например: факл .htaccess, директория .svn
<IfModule mod_rewrite.c>
RewriteRule (?:^|/)(?:\..*)$ - [F]
</IfModule>
<FilesMatch "(package\.json|gruntfile\.js|gulpfile\.js|bower\.json|composer\.(lock|json)|readme\.md)$">
# Apache < 2.3
<IfModule !mod_authz_core.c>
Order allow,deny
Deny from all
Satisfy All
</IfModule>
# Apache ≥ 2.3
<IfModule mod_authz_core.c>
Require all denied
</IfModule>
</FilesMatch>
# Защищает важные файлы (по расширению) от получения их содержимого через браузер.
<FilesMatch "(^#.*#|\.(bak|config|dist|fla|in[ci]|log|psd|sh|sql|sw[op]|bat|db)|~)$">
# Apache < 2.3
<IfModule !mod_authz_core.c>
Order allow,deny
Deny from all
Satisfy All
</IfModule>
# Apache ≥ 2.3
<IfModule mod_authz_core.c>
Require all denied
</IfModule>
</FilesMatch>
# ------------------------------------------------------------------------------
# |Защита часто встречающихcя config и .htaccess |
# ------------------------------------------------------------------------------
<files config.php>
order allow,deny
deny from all
</files>
<Files .htaccess>
order allow,deny
deny from all
</Files>
<Files /library/.htaccess>
order allow,deny
deny from all
</Files>
<Files httpd.conf>
order allow,deny
deny from all
</Files>
<Files php.ini>
order allow,deny
deny from all
</Files>
# Предотвращает частичный листинг файлов.
<IfModule mod_negotiation.c>
Options -MultiViews
</IfModule>
# ------------------------------------------------------------------------------
# |Доступ к веб-шрифтам |
# ------------------------------------------------------------------------------
# Allow access from all domains for web fonts
<IfModule mod_headers.c>
<FilesMatch "\.(eot|font.css|otf|ttc|ttf|woff)$">
Header set Access-Control-Allow-Origin "*"
</FilesMatch>
</IfModule>
# Защита от уязвимостей
RewriteCond %{QUERY_STRING} mosConfig_[a-zA-Z_]{1,21}(=|\%3D) [OR]
RewriteCond %{QUERY_STRING} base64_encode.*\(.*\) [OR]
RewriteCond %{QUERY_STRING} (\<|%3C).*script.*(\>|%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,L]
# Защита HTTP Заголовков
<ifModule mod_headers.c>
Header set X-XSS-Protection "1; mode=block"
# Если нет cloudflare.com открыть
#Header set Strict-Transport-Security "max-age=31536000; includeSubDomains; preload"
Header always append X-Frame-Options DENY
Header set X-Content-Type-Options nosniff
Header set X-Permitted-Cross-Domain-Policies "none"
Header set Referrer-Policy "no-referrer"
Header unset X-Powered-by
</IfModule>
# Отключение заголовка ETag
<IfModule mod_headers.c>
Header unset ETag
</IfModule>
FileETag None
# Удаление заголовка Last-Modified
<FilesMatch "\.(ico|pdf|flv|jpg|jpeg|png|gif|js|css)$">
Header unset Last-Modified
</FilesMatch>
# Заперещаем открытие сайта в iframe, на стороннем ресурсе. Тем самым предотвращаем clickjacking.
<IfModule mod_headers.c>
Header set X-Frame-Options "SAMEORIGIN"
<FilesMatch "\.(appcache|atom|crx|css|cur|eot|f4[abpv]|flv|gif|htc|ico|jpe?g|js|json(ld)?|m4[av]|manifest|map|mp4|oex|og[agv]|opus|otf|pdf|png|rdf|rss|safariextz|svgz?|swf|tt[cf]|vcf|vtt|webapp|web[mp]|woff|xml|xpi)$">
Header unset X-Frame-Options
</FilesMatch>
</IfModule>
# ------------------------------------------------------------------------------
# | Настройка cookie из фреймов |
# ------------------------------------------------------------------------------
# Разрешить установку куки из iframes в IE.
<IfModule mod_headers.c>
Header set P3P "policyref=\"/w3c/p3p.xml\", CP=\"IDC DSP COR ADM DEVi TAIi PSA PSD IVAi IVDi CONi HIS OUR IND CNT\""
</IfModule>
# Включить протоколирование SSL
<IfModule mod_ssl.c>
ErrorLog /var/log/apache2/ssl_engine.log
LogLevel debug
</IfModule>