### =========================================================================== ### Security Enhanced & Highly Optimized .htaccess File for Joomla! ### automatically generated by Admin Tools 6.1.10 on 2023-06-09 14:12:21 IST ### Auto-detected Apache version: 2.5 (best guess) ### =========================================================================== ### ### The contents of this file are based on the same author's work "Master ### .htaccess". ### ### Admin Tools is Free Software, distributed under the terms of the GNU ### General Public License version 3 or, at your option, any later version ### published by the Free Software Foundation. ### ### !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! IMPORTANT !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ### !! !! ### !! If you get an Internal Server Error 500 or a blank page when trying !! ### !! to access your site, remove this file and try tweaking its settings !! ### !! in the back-end of the Admin Tools component. !! ### !! !! ### !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ### ##### RewriteEngine enabled - BEGIN RewriteEngine On ##### RewriteEngine enabled - END ##### RewriteBase set - BEGIN RewriteBase / ##### RewriteBase set - END ##### File execution order -- BEGIN DirectoryIndex index.php index.html ##### File execution order -- END ##### No directory listings -- BEGIN IndexIgnore * Options -Indexes ##### No directory listings -- END ##### Redirect index.php to / -- BEGIN RewriteCond %{THE_REQUEST} !^POST RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /index\.php\ HTTP/ RewriteRule ^index\.php$ / [R=301,L] ##### Redirect index.php to / -- END ##### Rewrite rules to block out some common exploits -- BEGIN 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} (<|%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] ##### Rewrite rules to block out some common exploits -- END ##### File injection protection -- BEGIN RewriteCond %{REQUEST_METHOD} GET RewriteCond %{QUERY_STRING} [a-zA-Z0-9_]=http[s]?:// [OR] RewriteCond %{QUERY_STRING} [a-zA-Z0-9_]=(\.\.//?)+ [OR] RewriteCond %{QUERY_STRING} [a-zA-Z0-9_]=/([a-z0-9_.]//?)+ [NC] RewriteRule .* - [F] ##### File injection protection -- END ##### Advanced server protection rules exceptions -- BEGIN RewriteRule ^administrator\/components\/com_akeeba\/restore\.php$ - [L] RewriteRule ^administrator\/components\/com_admintools\/restore\.php$ - [L] RewriteRule ^administrator\/components\/com_joomlaupdate\/restore\.php$ - [L] RewriteRule ^modules\/mod_gk_news_highlighter\/style\/style\.php$ - [L] RewriteRule ^modules\/mod_fpss\/mod_fpss\/templates\/Default\/template_css\.php$ - [L] RewriteRule ^plugins\/content\/sige\/plugin_sige\/showthumb\.php$ - [L] RewriteRule ^modules\/mod_js_social_tabs_slider\/tmpl\/form\/securimage\/securimage_show\.php$ - [L] RewriteRule ^modules\/mod_bambooBox\/image\.php$ - [L] RewriteRule ^components\/com_virtuemart\/fetchscript\.php$ - [L] RewriteRule ^components\/com_virtuemart\/show_image_in_imgtag\.php$ - [L] RewriteRule ^templates\/yoo_explorer\/lib\/gzip\/css\.php$ - [L] RewriteRule ^templates\/yoo_explorer\/lib\/gzip\/js\.php$ - [L] RewriteRule ^modules\/mod_fpss\/mod_fpss\/templates\/Movies\/template_css\.php$ - [L] RewriteRule ^modules\/mod_fpss\/tmpl\/Simple\/css\/template\.css\.php$ - [L] RewriteRule ^plugins\/content\/jw_allvideos\/jw_allvideos\/includes\/js\/jw_allvideos\.js\.php$ - [L] RewriteRule ^plugins\/editors\/jckeditor\/typography\/typography2\.php$ - [L] RewriteCond %{REQUEST_FILENAME} !(\.php)$ RewriteCond %{REQUEST_FILENAME} -f RewriteRule ^\.well\-known/ - [L] RewriteRule ^plugins\/system\/bfnetwork/ - [L] RewriteRule ^apps/ - [L] RewriteRule ^audios/ - [L] RewriteRule ^book/ - [L] RewriteRule ^children\-books\-online/ - [L] RewriteRule ^epubs/ - [L] RewriteRule ^FlipBooks/ - [L] RewriteRule ^talking_books/ - [L] RewriteRule ^tech/ - [L] RewriteRule ^videos/ - [L] RewriteRule ^Newsletter/ - [L] RewriteRule ^pdfs/ - [L] RewriteRule ^pear/ - [L] RewriteRule ^order/ - [L] ##### Advanced server protection rules exceptions -- END ##### Advanced server protection -- BEGIN ## Disable PHP Easter Eggs RewriteCond %{QUERY_STRING} \=PHP[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12} [NC] RewriteRule .* - [F] #### Back-end protection RewriteRule ^administrator/?$ - [L] RewriteRule ^administrator/index\.(php|html?)$ - [L] RewriteRule ^administrator/(components|modules|templates|images|plugins)/.*\.(jpe|jpg|jpeg|jp2|jpe2|png|gif|bmp|css|js|swf|html|mpg|mp3|mpeg|mp4|avi|wav|ogg|ogv|xls|xlsx|doc|docx|ppt|pptx|zip|rar|pdf|xps|txt|7z|svg|odt|ods|odp|flv|mov|htm|ttf|woff|woff2|eot|webp|xsl|JPG|JPEG|PNG|GIF|CSS|JS|TTF|WOFF|WOFF2|EOT|WEBP)$ - [L] RewriteRule ^administrator/ - [F] #### Disable client-side risky behavior in backend static content <If "%{REQUEST_URI} =~ m#^/administrator/(components|modules|templates|images|plugins)/.*\.(jpe|jpg|jpeg|jp2|jpe2|png|gif|bmp|css|js|swf|html|mpg|mp3|mpeg|mp4|avi|wav|ogg|ogv|xls|xlsx|doc|docx|ppt|pptx|zip|rar|pdf|xps|txt|7z|svg|odt|ods|odp|flv|mov|htm|ttf|woff|woff2|eot|webp|xsl|JPG|JPEG|PNG|GIF|CSS|JS|TTF|WOFF|WOFF2|EOT|WEBP)$#"> <IfModule mod_headers.c> Header always set Content-Security-Policy "default-src 'self'; script-src 'none';" </IfModule> </If> #### Front-end protection ## Allow limited access for certain directories with client-accessible content RewriteRule ^(components|modules|templates|images|plugins|media|libraries|media/jui/fonts)/.*\.(jpe|jpg|jpeg|jp2|jpe2|png|gif|bmp|css|js|swf|html|mpg|mp3|mpeg|mp4|avi|wav|ogg|ogv|xls|xlsx|doc|docx|ppt|pptx|zip|rar|pdf|xps|txt|7z|svg|odt|ods|odp|flv|mov|ico|htm|ttf|woff|woff2|eot|webp|xsl|JPG|JPEG|PNG|GIF|CSS|JS|TTF|WOFF|WOFF2|EOT|WEBP)$ - [L] RewriteRule ^(components|modules|templates|images|plugins|media|libraries|media/jui/fonts)/ - [F] #### Disable client-side risky behavior in frontend static content <If "%{REQUEST_URI} =~ m#^/(components|modules|templates|images|plugins|media|libraries|media/jui/fonts)/.*\.(jpe|jpg|jpeg|jp2|jpe2|png|gif|bmp|css|js|swf|html|mpg|mp3|mpeg|mp4|avi|wav|ogg|ogv|xls|xlsx|doc|docx|ppt|pptx|zip|rar|pdf|xps|txt|7z|svg|odt|ods|odp|flv|mov|ico|htm|ttf|woff|woff2|eot|webp|xsl|JPG|JPEG|PNG|GIF|CSS|JS|TTF|WOFF|WOFF2|EOT|WEBP)$#"> <IfModule mod_headers.c> Header always set Content-Security-Policy "default-src 'self'; script-src 'none';" </IfModule> </If> ## Disallow front-end access for certain Joomla! system directories (unless access to their files is allowed above) RewriteRule ^includes/js/ - [L] RewriteRule ^(cache|includes|language|logs|log|tmp)/ - [F] RewriteRule ^(configuration\.php|CONTRIBUTING\.md|htaccess\.txt|joomla\.xml|LICENSE\.txt|phpunit\.xml|README\.txt|web\.config\.txt) - [F] ## Explicitly allow access to the site's index.php main entry point file RewriteRule ^index.php(/.*){0,1}$ - [L] ## Explicitly allow access to the site's robots.txt file RewriteRule ^robots.txt$ - [L] ## Disallow access to all other PHP files throughout the site, unless they are explicitly allowed RewriteCond %{REQUEST_FILENAME} (\.php)$ RewriteCond %{REQUEST_FILENAME} -f RewriteRule (.*\.php)$ - [F] ##### Advanced server protection rules exceptions also bypass the “disable client-side risky behavior” features -- BEGIN <If "%{REQUEST_URI} == '/administrator/components/com_akeeba/restore.php'"> <IfModule mod_headers.c> Header always unset Content-Security-Policy </IfModule> </If> <If "%{REQUEST_URI} == '/administrator/components/com_admintools/restore.php'"> <IfModule mod_headers.c> Header always unset Content-Security-Policy </IfModule> </If> <If "%{REQUEST_URI} == '/administrator/components/com_joomlaupdate/restore.php'"> <IfModule mod_headers.c> Header always unset Content-Security-Policy </IfModule> </If> <If "%{REQUEST_URI} == '/modules/mod_gk_news_highlighter/style/style.php'"> <IfModule mod_headers.c> Header always unset Content-Security-Policy </IfModule> </If> <If "%{REQUEST_URI} == '/modules/mod_fpss/mod_fpss/templates/Default/template_css.php'"> <IfModule mod_headers.c> Header always unset Content-Security-Policy </IfModule> </If> <If "%{REQUEST_URI} == '/plugins/content/sige/plugin_sige/showthumb.php'"> <IfModule mod_headers.c> Header always unset Content-Security-Policy </IfModule> </If> <If "%{REQUEST_URI} == '/modules/mod_js_social_tabs_slider/tmpl/form/securimage/securimage_show.php'"> <IfModule mod_headers.c> Header always unset Content-Security-Policy </IfModule> </If> <If "%{REQUEST_URI} == '/modules/mod_bambooBox/image.php'"> <IfModule mod_headers.c> Header always unset Content-Security-Policy </IfModule> </If> <If "%{REQUEST_URI} == '/components/com_virtuemart/fetchscript.php'"> <IfModule mod_headers.c> Header always unset Content-Security-Policy </IfModule> </If> <If "%{REQUEST_URI} == '/components/com_virtuemart/show_image_in_imgtag.php'"> <IfModule mod_headers.c> Header always unset Content-Security-Policy </IfModule> </If> <If "%{REQUEST_URI} == '/templates/yoo_explorer/lib/gzip/css.php'"> <IfModule mod_headers.c> Header always unset Content-Security-Policy </IfModule> </If> <If "%{REQUEST_URI} == '/templates/yoo_explorer/lib/gzip/js.php'"> <IfModule mod_headers.c> Header always unset Content-Security-Policy </IfModule> </If> <If "%{REQUEST_URI} == '/modules/mod_fpss/mod_fpss/templates/Movies/template_css.php'"> <IfModule mod_headers.c> Header always unset Content-Security-Policy </IfModule> </If> <If "%{REQUEST_URI} == '/modules/mod_fpss/tmpl/Simple/css/template.css.php'"> <IfModule mod_headers.c> Header always unset Content-Security-Policy </IfModule> </If> <If "%{REQUEST_URI} == '/plugins/content/jw_allvideos/jw_allvideos/includes/js/jw_allvideos.js.php'"> <IfModule mod_headers.c> Header always unset Content-Security-Policy </IfModule> </If> <If "%{REQUEST_URI} == '/plugins/editors/jckeditor/typography/typography2.php'"> <IfModule mod_headers.c> Header always unset Content-Security-Policy </IfModule> </If> <If "%{REQUEST_URI} =~ m#^\.well\-known/#"> <IfModule mod_headers.c> Header always unset Content-Security-Policy </IfModule> </If> <If "%{REQUEST_URI} =~ m#^plugins\/system\/bfnetwork/#"> <IfModule mod_headers.c> Header always unset Content-Security-Policy </IfModule> </If> <If "%{REQUEST_URI} =~ m#^apps/#"> <IfModule mod_headers.c> Header always unset Content-Security-Policy </IfModule> </If> <If "%{REQUEST_URI} =~ m#^audios/#"> <IfModule mod_headers.c> Header always unset Content-Security-Policy </IfModule> </If> <If "%{REQUEST_URI} =~ m#^book/#"> <IfModule mod_headers.c> Header always unset Content-Security-Policy </IfModule> </If> <If "%{REQUEST_URI} =~ m#^children\-books\-online/#"> <IfModule mod_headers.c> Header always unset Content-Security-Policy </IfModule> </If> <If "%{REQUEST_URI} =~ m#^epubs/#"> <IfModule mod_headers.c> Header always unset Content-Security-Policy </IfModule> </If> <If "%{REQUEST_URI} =~ m#^FlipBooks/#"> <IfModule mod_headers.c> Header always unset Content-Security-Policy </IfModule> </If> <If "%{REQUEST_URI} =~ m#^talking_books/#"> <IfModule mod_headers.c> Header always unset Content-Security-Policy </IfModule> </If> <If "%{REQUEST_URI} =~ m#^tech/#"> <IfModule mod_headers.c> Header always unset Content-Security-Policy </IfModule> </If> <If "%{REQUEST_URI} =~ m#^videos/#"> <IfModule mod_headers.c> Header always unset Content-Security-Policy </IfModule> </If> <If "%{REQUEST_URI} =~ m#^Newsletter/#"> <IfModule mod_headers.c> Header always unset Content-Security-Policy </IfModule> </If> <If "%{REQUEST_URI} =~ m#^pdfs/#"> <IfModule mod_headers.c> Header always unset Content-Security-Policy </IfModule> </If> <If "%{REQUEST_URI} =~ m#^pear/#"> <IfModule mod_headers.c> Header always unset Content-Security-Policy </IfModule> </If> <If "%{REQUEST_URI} =~ m#^order/#"> <IfModule mod_headers.c> Header always unset Content-Security-Policy </IfModule> </If> ##### Advanced server protection rules exceptions also bypass the “disable client-side risky behavior” features -- END ## Disallow access to htaccess.txt, php.ini, .user.ini and configuration.php-dist RewriteRule ^(htaccess\.txt|configuration\.php-dist|php\.ini|\.user\.ini)$ - [F] # Disallow access to all other front-end folders RewriteCond %{REQUEST_FILENAME} -d RewriteCond %{REQUEST_URI} !^/ RewriteRule .* - [F] # Disallow access to all other front-end files RewriteCond %{REQUEST_FILENAME} -f RewriteRule !^index.php$ - [F] ## Protect against clickjacking <IfModule mod_headers.c> Header always append X-Frame-Options SAMEORIGIN # The `X-Frame-Options` response header should be send only for # HTML documents and not for the other resources. <FilesMatch "\.(appcache|atom|bbaw|bmp|crx|css|cur|eot|f4[abpv]|flv|geojson|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|topojson|tt[cf]|txt|vcard|vcf|vtt|webapp|web[mp]|woff2?|xloc|xml|xpi)$"> Header unset X-Frame-Options </FilesMatch> </IfModule> ## Reduce MIME type security risks <IfModule mod_headers.c> Header set X-Content-Type-Options "nosniff" </IfModule> ## Reflected XSS prevention <IfModule mod_headers.c> Header set X-XSS-Protection "1; mode=block" </IfModule> # mod_headers cannot match based on the content-type, however, # the X-XSS-Protection response header should be sent only for # HTML documents and not for the other resources. <IfModule mod_headers.c> <FilesMatch "\.(appcache|atom|bbaw|bmp|crx|css|cur|eot|f4[abpv]|flv|geojson|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|topojson|tt[cf]|txt|vcard|vcf|vtt|webapp|web[mp]|webmanifest|woff2?|xloc|xml|xpi)$"> Header unset X-XSS-Protection </FilesMatch> </IfModule> ## Remove Apache and PHP version signature <IfModule mod_headers.c> Header always unset X-Powered-By Header always unset X-Content-Powered-By </IfModule> ServerSignature Off ## Prevent content transformation <IfModule mod_headers.c> Header merge Cache-Control "no-transform" </IfModule> ##### Advanced server protection -- END ## Referrer-policy <IfModule mod_headers.c> Header always set Referrer-Policy "unsafe-url" </IfModule> ## Set the UTF-8 character set as the default # Serve all resources labeled as `text/html` or `text/plain` # with the media type `charset` parameter set to `UTF-8`. AddDefaultCharset utf-8 # Serve the following file types with the media type `charset` # parameter set to `UTF-8`. # # https://httpd.apache.org/docs/current/mod/mod_mime.html#addcharset <IfModule mod_mime.c> AddCharset utf-8 .atom \ .bbaw \ .css \ .geojson \ .js \ .json \ .jsonld \ .rdf \ .rss \ .topojson \ .vtt \ .webapp \ .xloc \ .xml </IfModule> ##### Joomla! core SEF Section -- BEGIN # PHP FastCGI fix for HTTP Authorization RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}] ##### Joomla! core SEF Section -- BEGIN RewriteCond %{REQUEST_URI} !^/index\.php RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule .* index.php [L] ##### Joomla! core SEF Section -- END <IfModule mime_module> AddHandler application/x-httpd-ea-php74 .php .php7 .phtml </IfModule> # php -- BEGIN cPanel-generated handler, do not edit # Set the “ea-php74” package as the default “PHP” programming language. <IfModule mime_module> AddHandler application/x-httpd-ea-php74 .php .php7 .phtml </IfModule> # php -- END cPanel-generated handler, do not edit