What Is the Disable .htaccess File Access feature?
The WordPress .htaccess file controls how your web server (Apache or LiteSpeed) handles requests. It contains rewrite rules, security headers, and other server configuration.
By default, the .htaccess file can be accessed via HTTP if the server isn’t properly configured. The Disable .htaccess File Access feature adds rules to prevent this.
Why You Need It
The .htaccess file reveals server configuration:
- Rewrite rules: Show how URLs are processed (could reveal hidden endpoints)
- Security headers: Show what protections are in place
- Authentication rules: Could expose protected directories
- Redirects: Show URL patterns and structure
- Custom configurations: Could reveal vulnerabilities
Blocking HTTP access prevents attackers from reading this information.
How to Disable .htaccess File Access in WordPress
Step 1: Navigate to Settings
Click into the Classic Monks plugin settings in your WordPress dashboard.
Step 2: Go to the Security Tab
Click on the Security menu, then click the WP Protection subtab.
Step 3: Enable Disable .htaccess File Access
Scroll to Disable .htaccess File Access and toggle on.
Step 4: Save Changes
Click Save Changes.
Step 5: Test
Try to access https://yoursite.com/.htaccess in your browser. The server should return 403 Forbidden (or 404).
Configuration Options
| Option | Description | Default |
|---|---|---|
| Disable .htaccess File Access | Master toggle. | Off |
No nested options.
What Gets Affected
- The
.htaccessfile: not accessible via HTTP - Similar files (
.htpasswd,.user.ini): also blocked - The server configuration: still works (the file is used by the server)
What Does NOT Get Affected
- The WordPress functionality: not affected (WordPress uses the file at the server level)
- The wp-admin: not affected
- The REST API: not affected
- The frontend pages: not affected
Advanced Options (Developers)
This feature registers 2 WordPress hooks in htaccess-functions.php:
Actions:
initcallscm_disable_htaccess_file_access()(Blocks .htaccess file access via constants)
Filters:
filesystem_methodcallscm_block_htaccess_filesystem_access()(Blocks direct filesystem access to .htaccess (priority 999))
// Hooked in htaccess-functions.php
add_filter( 'filesystem_method', 'cm_block_htaccess_filesystem_access' );
The feature modifies WordPress behavior by registering or removing hooks. Disabling it reverses those changes and WordPress returns to its default behavior.
Common Use Cases
Multi-site Networks
On WordPress multisite networks, each site has its own .htaccess. Blocking access to all of them adds another layer of protection.
Compliance Audits
Some security audits (PCI DSS, SOC 2) require .htaccess protection as a control. This feature helps meet those requirements.
Public-Facing Sites
For sites where the .htaccess contains sensitive redirect rules (e.g., affiliate links, custom URLs), blocking access prevents attackers from mapping the URL structure.
Troubleshooting
The .htaccess file is still accessible
Cause: A server-level configuration is overriding the WordPress-added rules.
Fix: Add the rule directly to your Apache config or .htaccess. Use <Files ".htaccess"> Require all denied </Files> (Apache 2.4+) or <Files ".htaccess"> Order allow,deny Deny from all </Files> (Apache 2.2).
The site is broken after enabling
Cause: A server conflict or the .htaccess file itself has issues.
Fix: Check the server error log. The Disable .htaccess File Access feature adds rules; if the rules conflict with your existing .htaccess, the site may break. Disable the feature and manually add the rules.
I want to allow access to .htaccess for admin
Cause: The block is global.
Fix: The block is via HTTP only. Local file access (FTP, SSH) is not affected. Admins can still read the file via the file manager or command line.
The Nginx server is not affected
Cause: Nginx doesn’t use .htaccess files. The Disable .htaccess File Access feature adds rules to .htaccess, which Nginx ignores.
Fix: For Nginx, add the block to your Nginx config: location ~ /.ht { deny all; }.