1

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.

1 Answer 1

0

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.

2
  • That's it, thanks. But If I user folows example.com link from example/subfolder/file.html it would redirect to example.com/subfolder/ May 5, 2022 at 5:51
  • @StasPonomaryov Sorry, there was a typo in my answer. It should be %{HTTP_REFERER}, not ${...}! I've updated my answer.
    – MrWhite
    May 5, 2022 at 17:14

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .