Search code examples
apache.htaccess

apache .htaccess redirect regex


I need this redirect 301 rule in apache .htaccess:

/catalog/{category_slug}/{product_slug} 

to

/product/{product_slug}

example:

/catalog/cat1/prod1 to /product/prod1
/catalog/cat1/prod2 to /product/prod2
/catalog/cat2/prod3 to /product/prod3

and also:

/en/catalog/abc/xyz to /en/product/xyz
/es/catalog/abc/xyz to /es/product/xyz
...
...

Could you please help me?

tks Simone


Solution

  • Add this to the top of your .htaccess file:

    RewriteEngine On # no need to do this twice, once is enough
    
    RewriteRule ^([^\/]+\/)?catalog\/[^\/]*\/([^0-9].*) /$1product/$2 [R=302,QSA,L]
    

    Make sure mod_rewrite is enabled on the server.

    This will redirect:

    1. /catalog/abc/xyz to /product/xyz
    2. /catalog/abc/123/xyz to /product/123/xyz
    3. Also redirect with the query string because of QSA flag.