skip to Main Content

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

2

Answers


  1. At the top of your root .htaccess file using mod_rewrite:

    RewriteEngine On
    
    RewriteRule ^catalog/[^/]+/([^/]+)/?$ /product/$1 [R=302,L]
    

    The $1 backreference contains the "{product-slug}" (3rd path segment) from the capturing group in the preceding RewriteRule pattern.

    Login or Signup to reply.
  2. 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.
    Login or Signup to reply.
Please signup or login to give your own answer.
Back To Top
Search