File: /var/www/captainschairit.com/.htaccess
Redirect 301 /tag/msp-client-portal https://captainschairit.com/
Redirect 301 /tag/managed-services/ https://captainschairit.com/
Redirect 301 /tag/msp-dashboard/ https://captainschairit.com/
Redirect 301 /tag/it-managed-services/ https://captainschairit.com/
Redirect 301 /tag/connectwise/ https://captainschairit.com/
Redirect 301 /tag/smileback/ https://captainschairit.com/
Redirect 301 /tag/connectwise-dashboard/ https://captainschairit.com/
Redirect 301 /tag/cisco-meraki/ https://captainschairit.com/
#Redirect 301 /tag https://captainschairit.com/
#RedirectMatch 301 ^/tag/$ /blog/
# 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.
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
# HTTP OPTIONS Method Enabled
# Uncommon HTTP Method Enabled
RewriteCond %{THE_REQUEST} !^(POST|GET)\ /.*\ HTTP/1\.1$
RewriteRule .* - [F]
# Uncommon HTTP Method Enabled end
RewriteBase /
# xss attack prevention
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})
# xss attack prevention end
RewriteRule .* index.php [F,L]
#RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
# restricting access to wp-include and wp-admin folder
RewriteRule ^wp-admin/includes/ - [F,L]
RewriteRule !^wp-includes/ - [S=3]
RewriteRule ^wp-includes/[^/]+\.php$ - [F,L]
RewriteRule ^wp-includes/js/tinymce/langs/.+\.php - [F,L]
RewriteRule ^wp-includes/theme-compat/ - [F,L]
RedirectMatch 403 /(error_log|fantastico_fileslist|fantversion|install|license|readme|wp-config|wp-config-sample)\.
RedirectMatch Permanent wp-admin/install(-helper)?\.php /
# restricting access to wp-include and wp-admin folder end
</IfModule>
# END WordPress
# Denay access to files
Options All -Indexes
<Files ".user.ini">
<IfModule mod_authz_core.c>
Require all denied
</IfModule>
<IfModule !mod_authz_core.c>
Order deny,allow
Deny from all
</IfModule>
</Files>
# Deny access to wp-config.php file
<files wp-config.php>
order allow,deny
deny from all
</files>
# Deny access to all .htaccess files
<files ~ "^.*\.([Hh][Tt][Aa])">
order allow,deny
deny from all
satisfy all
</files>
# Denay access to files end
# X-Frame-Options, Cookie, Content-Type-Options, Access-Control, Cache-Control
<IfModule mod_headers.c>
Header set X-Frame-Options "SAMEORIGIN"
Header always edit Set-Cookie (.*) "$1; path=/; HTTPOnly; Secure"
Header always edit Set-Cookie "(?i)^((?:(?!;\s?secure).)+)$" "$1; secure"
Header edit Set-Cookie ^(.*);\s?;\s?(.*)$ "$1; $2"
Header add X-XSS-Protection "1; mode=block"
Header set X-Frame-Options: deny
Header set X-Content-Type-Options nosniff
Header set X-Permitted-Cross-Domain-Policies: none
Header unset X-Powered-By
Header add Access-Control-Allow-Methods: "POST, GET, OPTIONS, DELETE"
Header always set Access-Control-Allow-Credentials "true"
Header always set Access-Control-Max-Age "1000"
Header always set Cache-Control "no-cache,no-store,max-age=0,must-revalidate"
Header always set Access-Control-Allow-Headers "x-requested-with, Content-Type, origin, authorization, accept, client-security-token, remember-me"
Header always set Strict-Transport-Security "max-age=31536000; includeSubDomains; preload"
</IfModule>
# X-Frame-Options, Cookie, Content-Type-Options, Access-Control, Cache-Control end
# Wordfence WAF
<Files ".user.ini">
<IfModule mod_authz_core.c>
Require all denied
</IfModule>
<IfModule !mod_authz_core.c>
Order deny,allow
Deny from all
</IfModule>
</Files>
# END Wordfence WAF