1

My root website (example.com) and its folder (example.com/folder) have two different CMS (Opencart for example.com and WordPress for example.com/folder).

I use this code in example.com to force non-www https mode:

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

RewriteCond %{HTTPS} !on
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]

This code works perfectly for example.com and all its sub-folders expect for example.com/folder with WordPress CMS.

What should I do?

  • Does your WordPress site in the subdirectory not already have its own .htaccess file (for pretty permalinks)? – MrWhite May 18 '18 at 9:20
  • Yes, It has own .htaccess file. – Pasakgroup May 18 '18 at 9:51
  • Sorry, at first I assumed these directives were adversely affecting the WordPress site, but I guess you meant that they weren't doing anything for the WordPress site? See my answer below. – MrWhite May 18 '18 at 10:11
1

You presumably want these directives to apply to the WordPress installation in the subdirectory as well - but it is currently not doing anything for WordPress I assume?

This is expected behaviour if you have enabled WordPress "pretty" permalinks. Because the mod_rewrite directives in the WordPress .htaccess file (in the subdirectory) will completely override the mod_rewrite directives in the parent .htaccess file. The mod_rewrite directives in the parent .htaccess will not be processed.

You can utilise mod_rewrite inheritance, but this depends on what other mod_rewrite directives you have in the parent .htaccess file and on your server config (particularly the Apache version). Besides, it is probably beneficial to keep the OpenCart and WordPress configs as separate as much as possible.

The easiest solution is to reproduce these directives at the start of the .htaccess file in the WordPress subdirectory. However, you can't simply copy them without alteration, otherwise you will likely lose the subdirectory from the redirected URL when requesting the www subdomain.

For example, try the following at the top of the example.com/folder/.htaccess file:

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

RewriteCond %{HTTPS} !on
RewriteRule .* https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
  • Code works properly for HTTP folder and all its subdirectories and also for all www subdirectories, but only for case {www.example.com/folder/} , root folder (WordPress root folder) will be redirect to root HTTPS domain! – Pasakgroup May 18 '18 at 12:19
  • 1
    The issue has been resolved. Also, the last problem was fixed by clearing the browser's cache. – Pasakgroup May 18 '18 at 14:48

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.