Home > OS >  .htaccess redirect issue with multiple .htaccess file
.htaccess redirect issue with multiple .htaccess file

Time:07-06

I am using .htaccess file like below for redirect www to non www on my public_html directory

RewriteEngine On
RewriteBase /
RewriteCond %{HTTP_HOST} ^www\.(.*)$ [NC]
RewriteRule ^(.*)$ https://%1/$1 [R=301,L]

its working fine and redirect like below

    www.example.com
to
    https://example.com

Now in my sub directory called latest, I have another .htaccess file like below

RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([^/\.] )/?$ index.php?page=$1 [L]

which is making my url clean like below

www.example.com/latest/index.php?page=1
to
www.example.com/latest/1

but even I have .htaccess file in home directory which is making www to non www, my this directory does not redirect www to non www.

I want redirect

www.example.com/latest/1
to 
https://example.com/latest/1

I am sure .htaccess file in my directory is causing issue but I do not know how to resolve it. Let me know if anyone here can help me for the same.

Thanks!

CodePudding user response:

The problem is, mod_rewrite is not inherited (at least by default). If you have a rewrite rule in the "default" directory .. You're going to have to include that rule in all subsequent directories "below" that. I have never seen (or heard of) a setting for allowing mod_rewrite to allow inheritance from parent .htaccess files. In general, this is just accepted as "the way it is".

UPDATE

THIS QUESTION In Server Fault explains this as well. The mod_rewrite rules from the previous htaccess files don't even get processed.

COMBINE THE 2 in the SUB DIRECTORIES

RewriteEngine On
RewriteBase /
RewriteCond %{HTTP_HOST} ^www\.(.*)$ [NC]
RewriteRule ^(.*)$ https://%1/$1 [R=301,L]

# add this only to sub directories
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([^/\.] )/?$ index.php?page=$1 [L]
  • Related