web-dev-qa-db-fra.com

Redirection/px /? Q = x vers/px/x /

Nous avons une page qui affiche les produits en fonction d'une variable de chaîne de requête q.

Comme ça:

http://example.com/px/?q=ninja-coffee

Nous aimerions afficher l'URL de ces pages comme ceci:

http://example.com/px/ninja-coffee/

Jusqu’à présent, nous n’avons pas réussi à le faire fonctionner. Certains d’entre vous ont-ils des idées?

  • La solution peut être dans .htaccess ou functions.php (nous avons un thème enfant). Nous sommes heureux tant que ça marche
  • Notre page qui affiche les produits n'a rien à voir avec la recherche normale dans WordPress. C'est juste une page WordPress normale qui change le contenu en fonction de l'URL (c'est-à-dire ce qui vient après /px/)
1
Louisa

Dans votre .htaccess, ajoutez la règle suivante entre les balises <IfModule mod_rewrite.c>:

RewriteCond %{QUERY_STRING} ^q=(.*)$ [NC]
RewriteRule ^/?px/(.*)$ px/%1? [L,R=301]

Basé sur le .htaccess par défaut généré par WordPress, il devrait maintenant ressembler à ce qui suit avec votre RewriteRule personnalisé:

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
# Custom Rules
RewriteCond %{QUERY_STRING} ^q=(.*)$ [NC]
RewriteRule ^/?px/(.*)$ px/%1? [L,R=301]
</IfModule>

Effacez le cache de votre navigateur et tout domaine qui suit cette structure:

http://example.com/px/?q=SLUG

Va rediriger vers:

http://example.com/px/SLUG

Cela a été vérifié et testé de mon côté en utilisant le testeur htaccess .

0