Search code examples
regex.htaccess

Regex rule for .htaccess


Who can help me with regex rule?

If visited page is https://example.com/shop/product then I need to redirect user to https://example.com/product, but if visited page is https://example.com/shop/page/2 I need to do nothing.

There is possibility, that user landed on https://example.com/shop/category/child-category/product and for this example I need to redirect to https://example.com/category/child-category/product

I have already wrote this rule: RewriteRule ^shop/(.*)$ /$1 [R=301,L], but this rule redirects user from this page if he is in second or other pages.


Solution

  • You can use a negative lookahead condition like this:

    RewriteRule ^shop/(?!page/)(.+)$ /$1 [R=301,L,NC]
    

    (?!page/) is a negative lookahead condition that will fail the match if page/ appears after shop/