Redirect to Folder Only if Root from Other Site Referrer

.htaccessdirectorydocumentrootredirect

I have a redirect from root to subfolder. If user visits https://example.com it redirects to https://example.com/subfolder. But I want it not to redirect if referrer is my site, so user can reach root page.

For example:

  1. User visits https://example.com
  2. It redirects to https://example.com/subfolder
  3. User visits https://example.com/subfolder/file.html
  4. there's a link on this page to https://example.com and he follows it
  5. It must open https://example.com and not to redirect

Here is my .htaccess:

RedirectMatch ^/$ https://example.com/

Please, give me an advice to solve the problem, I'm poor on .htaccess rules.

Best Answer

Here is my .htaccess:

RedirectMatch ^/$ https://example.com/

This obviously doesn't redirect to /subfolder as you suggest. It would create an endless redirect loop.

However, you can't check the Referer header using a mod_alias RedirectMatch. You need to use mod_rewrite (or an <If> expression) instead.

For example:

RewriteEngine On

RewriteCond %{HTTP_REFERER} !^https://example\.com($|/)
RewriteRule ^$ /subfolder/ [R,L]

Note that the check for an empty URL-path (ie. ^$) is intentional. The RewriteRule pattern does not match the slash prefix.

Related Topic