views:

18

answers:

2

Hi,

I'm trying to rewrite the following url:

index.php?route=checkout/cart

to

/cart

using:

RewriteRule ^index.php?route=checkout/cart$ /basket [L] 

However it doesn't seem to work. Anyone know what I'm doing wrong?

Thanks

A: 

RewriteRule does only test the URL path. You need RewriteCond to test the query:

RewriteCond %{QUERY_STRING} ^route=checkout/cart$
RewriteRule ^index\.php$ /basket [L,R=301]

The additional R=301 flag will cause an external redirect with the status code 301 (permanent redirect) instead of an internal redirect.

And if you want the other way round:

RewriteRule ^basket$ index.php?route=checkout/cart [L]
Gumbo
A: 

You need to send a redirect so that the new URL get reflected in browser address bar. So, add R to the [L].

RewriteRule ^index.php?route=checkout/cart$ /basket [R,L] 

If you'd like that searchbots should ignore the "ugly" URL and/or remove it from the indexes and use the new instead, then send a 301 redirect.

RewriteRule ^index.php?route=checkout/cart$ /basket [R=301,L] 
BalusC