Take the 2-minute tour ×
Webmasters Stack Exchange is a question and answer site for pro webmasters. It's 100% free, no registration required.

I'm having some trouble with redirects and I haven't been able to get this to work. I want to make the following

http://www.example.com/seasonal/christmas?p=15

redirect to

http://www.example.com/holiday-decor/christmas.html

I was wondering if someone could help me with the rewrite rule so the query string doesn't appear in the redirected URL. I'm using .htaccess with a Magento platform site.

share|improve this question

2 Answers 2

By default the query string on the requested URL is appended to the rewritten/redirected URL. The easiest way to remove the query string from the redirected URL is to simply append a ? at the end of the RewriteRule substitution. This essentially writes a blank query string (the ? does not actually become part of the rewritten URL).

So, from your example:

RewriteEngine On
RewriteCond %{QUERY_STRING} =p=15
RewriteRule ^seasonal/christmas$ /holiday-decor/christmas.html? [R=301,L]

The RewriteCond directive is required in order to match the query string part of the requested URL. The URL matched against the RewriteRule pattern does not include the query string. The = prefix on the CondPattern =p=15 indicates a a literal "string" match, so it matches p=15 exactly.

share|improve this answer

Try adding this to your .htaccess in the document root:

RewriteEngine On   
RewriteCond %{QUERY_STRING} ^(.*)&?start=0(.*)$  
RewriteRule ^/?products\.php$ /products.php?%1%2 [R=301,NE]
share|improve this answer
    
This does not answer the question or even work with the OPs example?! This particular example is intended to remove a particular segment (name/value pair) from a query string, whilst maintaining the rest of it. –  w3d Mar 20 at 23:44

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.