2017-08-05 2 views
-1

J'essaie de rediriger http://example.com/for-sale/?property=1234 vers http://example.com/for-sale/property-name/ dans .htaccess, en utilisant RewriteCond et RewriteRule. C'est ce que j'ai jusqu'à présent:htaccess chaîne de requête de redirection ne fonctionne pas

RewriteCond %{QUERY_STRING} ^(property=1234) 
RewriteRule ^$ /for-sale/property-name/? [R=301,L] 

Cela ne fonctionne pas. Je peux rediriger? Property = 1234 vers for-sale/property-name/mais comment puis-je le faire fonctionner avec/for-sale/dans l'URL non redirigée? J'ai essayé diverses combinaisons de for-sale dans le RewriteRule mais sans succès. Merci. Tous mes liens sont maintenant cassés donc j'apprécierais vraiment quelques conseils. Merci.

+0

Non, il est généré par WordPress et provient du paramètre 'rewrite' dans 'register_post_type'. J'ai trouvé le problème et l'ai réparé, veuillez voir la réponse ci-dessous. – ardmark

Répondre

1

Ceci est un site wordpress, donc la première erreur a été de faire les réécritures après que wordpress ait réécrit. La deuxième erreur était dans la RewriteRule. Voici le code de travail:

<IfModule mod_rewrite.c> 
RewriteEngine On 
RewriteBase/

RewriteCond %{QUERY_STRING} property=1234$ 
RewriteRule ^for-sale/?$ /for-sale/property-name/? [R=301,L] 

... my other rewrites 

</IfModule> 

# BEGIN WordPress 
<IfModule mod_rewrite.c> 
RewriteEngine On 
RewriteBase/
RewriteRule ^index\.php$ - [L] 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule . /index.php [L] 
</IfModule> 

# END WordPress 

Cela fonctionne. J'espère que ça aide quelqu'un d'autre.