Home > database >  Redirect Wordpress internal files to 404 page
Redirect Wordpress internal files to 404 page

Time:08-30

I have a WordPress installation at mydomain.com/blogs and I have the following .htaccess

RewriteEngine On
RewriteBase /blogs/
RewriteBase /
RewriteRule ^index\.php$ - [L]
ErrorDocument 404 /blogs/

# add a trailing slash to /wp-admin
RewriteRule ^([_0-9a-zA-Z-] /)?wp-admin$ $1wp-admin/ [R=301,L]


#RewriteBase /
#RewriteRule ^index\.php$ - [L]
#RewriteCond %{REQUEST_FILENAME} !-f
#RewriteCond %{REQUEST_FILENAME} !-d
#RewriteRule . /index.php [L]

RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^ - [L]
RewriteRule ^([_0-9a-zA-Z-] /)?(wp-(content|admin|includes).*) $2 [L]
RewriteRule ^([_0-9a-zA-Z-] /)?(.*\.php)$ $2 [L]
RewriteRule ./index.php [L]

# 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
RewriteBase /blogs/
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /blogs/index.php [L]
</IfModule>

# END WordPress

Now everything works fine, but URLs like

mydomain.com/blogs/wp-content/plugins/

mydomain.com/blogs/wp-config.php

are not redirected to the 404 correctly. It is showing a blank white page. I need these files to be redirected to the 404 page. Please help.

CodePudding user response:

With your shown samples and attempts please try following .htaccess rules file. Apart from adding new rules added few FLAGs in to your existing rules also.

Make sure to clear your browser cache before testing your URLs.

RewriteEngine On
RewriteBase /blogs/
RewriteBase /
RewriteRule ^index\.php$ - [NC,L]
ErrorDocument 404 /blogs/

# add a trailing slash to /wp-admin
RewriteRule ^([_0-9a-zA-Z-] /)?wp-admin$ $1wp-admin/ [R=301,NC,L]


#RewriteBase /
#RewriteRule ^index\.php$ - [L]
#RewriteCond %{REQUEST_FILENAME} !-f
#RewriteCond %{REQUEST_FILENAME} !-d
#RewriteRule . /index.php [NC,L]

RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^ - [L]
RewriteRule ^([_0-9a-zA-Z-] /)?(wp-(content|admin|includes).*) $2 [NC,L]
RewriteRule ^([_0-9a-zA-Z-] /)?(.*\.php)$ $2 [NC,L]
RewriteRule ./index.php [NC,L]

# 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>
RewriteBase /blogs/
RewriteRule ^index\.php$ - [NC,L]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{THE_REQUEST} \s/blogs/wp-content/plugins/?\s [NC]
RewriteRule . /blogs/index.php [NC,L]


RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{THE_REQUEST} \s/blogs/wp-config\.php(\?\S )?\s [NC]
RewriteRule . /blogs/index.php [NC,L]
</IfModule>

# END WordPress

CodePudding user response:

You could force a 404 redirect:

RewriteEngine on
RewriteBase /

RewriteCond %{REQUEST_URI} ^/wp-config\.php$
RewriteRule .* - [L,R=404] 
  • Related