fionafenton
asked on
Redirect url with query string
Moving a site to Wordpress and have a specific old url that I want to redirect to new page with 301
The old page that I want to redirect is
www.mydomain.co./property/region/Brittany/type.php?ss=Brittany&tt=Gites%20Complex&var1=mls&var=type
And I want it to redirect to
www.mydomain.com/property/search/Cotes-dArmor_Finistere_Ille-et-Vilaine_Morbihan/p/p/b/Gites-Complex/l/a/
I think because of some rewrite rules I have added, the old page isn't currently producing a 404
It's redirecting to
www.mydomain/property/region/Brittany/type.php/?ss=Brittany&tt=Gites%20Complex&var1=mls&var=type
The difference is the forward slash after type.php
I'm pretty sure it's some existing rewrite rules I've set up that are causing this. These are
add_rewrite_rule( 'property/region/([^/]+)/( [^/]+)/?', 'index.php?&page_id=69695& mls=$match es[1]&page no=$matche s[2]', 'top');
add_rewrite_rule( 'property/region/([^/]+)/? ', 'index.php?&page_id=69695& mls=$match es[1]', 'top');
I don't seem to be able to overwrite these rules for this specific url
I've tried
add_rewrite_rule( 'property/region/Brittany/ type.php?s s=Brittany &tt=Gites% 20Complex& var1=mls&v ar=type?', 'index.php?&page_id=70318& mls=Cotes- dArmor_Fin istere_Ill e-et-Vilai ne_Morbiha n&minp=p&m axp=p&beds =b&type=Gi tes-Comple x&minl=l&a rea=a', 'top');
I've also tried adding this to top of .htaccess file
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{QUERY_STRING} ^ss=Brittany&tt=Gites%20Co mplex&var1 =mls&var=t ype$ [NC]
RewriteRule ^/property/region/Brittany /type.php$ http://www.mydomain.com/property/search/Cotes-dArmor_Finistere_Ille-et-Vilaine_Morbihan/p/p/b/Gites-Complex/l/a/? [R=301,L]
</IfModule>
I'm sure it's something very minor that I've got wrong, but I just can't spot it.
The old page that I want to redirect is
www.mydomain.co./property/region/Brittany/type.php?ss=Brittany&tt=Gites%20Complex&var1=mls&var=type
And I want it to redirect to
www.mydomain.com/property/search/Cotes-dArmor_Finistere_Ille-et-Vilaine_Morbihan/p/p/b/Gites-Complex/l/a/
I think because of some rewrite rules I have added, the old page isn't currently producing a 404
It's redirecting to
www.mydomain/property/region/Brittany/type.php/?ss=Brittany&tt=Gites%20Complex&var1=mls&var=type
The difference is the forward slash after type.php
I'm pretty sure it's some existing rewrite rules I've set up that are causing this. These are
add_rewrite_rule( 'property/region/([^/]+)/(
add_rewrite_rule( 'property/region/([^/]+)/?
I don't seem to be able to overwrite these rules for this specific url
I've tried
add_rewrite_rule( 'property/region/Brittany/
I've also tried adding this to top of .htaccess file
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{QUERY_STRING} ^ss=Brittany&tt=Gites%20Co
RewriteRule ^/property/region/Brittany
</IfModule>
I'm sure it's something very minor that I've got wrong, but I just can't spot it.
ASKER
Unfortunately that hasn't worked. It's still redirecting to www.mydomain/property/region/Brittany/type.php/?ss=Brittany&tt=Gites%20Complex&var1=mls&var=type
It's just adding the forward slash after type.php
I removed all my redirects so that I would get a 404 for the page (leaving in the one for property/search/). I then added this to top of .htaccess file
It's just adding the forward slash after type.php
I removed all my redirects so that I would get a 404 for the page (leaving in the one for property/search/). I then added this to top of .htaccess file
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{QUERY_STRING} ^ss=Brittany&tt=Gites\%20Complex&var1=mls&var=type$ [NC]
RewriteRule ^/property/region/Brittany/type.php$ http://www.mydomain.com/property/search/Cotes-dArmor_Finistere_Ille-et-Vilaine_Morbihan/p/p/b/Gites-Complex/l/a/? [R=301,L]
</IfModule>
And I'm still getting a 404. So there must still be still be something wrong with the above code.
Light up you rewrite log and post results of a single browse attempt.
ASKER
I don't have access to create a rewrite log.
That makes things much more difficult.
A couple more things you can try:
1) Add the [NC] flag to your RewriteRule. You have mixed-caps in that rule, so that could have an effect.
2) Remove the RewriteCond entirely and verify the RewriteRule by itself is picking up the request. If it works, add pieces of the query string test back in one by one, testing for failure each time. Remember that RewriteCond is not a token parser... it will execute a literal match. E.g., "&var1=mls&var=type" will not match "&var=type&var1=mls".
A couple more things you can try:
1) Add the [NC] flag to your RewriteRule. You have mixed-caps in that rule, so that could have an effect.
2) Remove the RewriteCond entirely and verify the RewriteRule by itself is picking up the request. If it works, add pieces of the query string test back in one by one, testing for failure each time. Remember that RewriteCond is not a token parser... it will execute a literal match. E.g., "&var1=mls&var=type" will not match "&var=type&var1=mls".
ASKER
I'm pretty sure the RewriteRule isn't getting processed up at all. What I think is happening is that my Wordpress add_rewrite_rule is taking precedence. My understanding is that if I place my RewriteRule at the top of the .htaccess file then this would be processed before the Wordpress ones, but this obviously isn't happening.
ASKER CERTIFIED SOLUTION
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
ASKER
It's working!
Thank you so much for all your help.
Thank you so much for all your help.
Open in new window
Also, try to use a code block when posting file contents. It makes it much easier to read.