web-dev-qa-db-fra.com

Masquage / mappage d'URL avec .htaccess

J'ai récemment essayé de trouver un moyen de masquer l'URL visible dans le navigateur (donc pas de redirection 301) tout en affichant le même contenu que l'URL d'origine.

Voici le scénario ...

Les URL actuelles ressemblent à ceci: -

domain.com/parent-category/sub-category/filter/brand

(parent-category et sub-category seront toujours le même mot).

Je souhaite continuer à afficher le contenu de ces URL, mais convertir les URL pour qu'elles se présentent comme suit: -

domain.com/brand-keyword

(keyword sera toujours le même mot).

J'apprécierais vraiment si des experts en .htaccess pouvaient conseiller si cela était possible, s'il vous plaît. Soit dit en passant, c'est un magasin Magento.

Ce qui suit m'a déjà été suggéré: -

RewriteRule ^parent-category/([^/]+)/filter/([^/]+)/?$ /$2-$1 [L,NC]

Mais cela n’a pas eu l’effet souhaité ... (L’adresse URL visible n’a pas encore été modifiée dans le navigateur, mais l’ajout de R, 301 le redirige cependant).

Exemple spécifique

URL actuelle domain.com/showering/showers/filter/alliance

URL requise domain.com/alliance-showers

1
zigojacko

Vous définissez une règle à l'envers, donc cela ne fonctionne pas. La syntaxe est la suivante:

Syntax of RewriteRule

Cela fonctionnerait, mais casserait probablement votre magento (comme toutes les urls avec un tiret "-" dans ce sera réécrit):

RewriteRule ^/(.*)-(.*)$ /parent-category/sub-category/$2/$1 [L,NC]

Je suggérerais donc de le placer sous un mot clé statique, tel que "boutique". Ainsi, lorsque vous accédez à domain.com/shop/brand-filter, il sera réécrit en /parent-category/sub-category/filter/brand:

RewriteRule ^/shop/(.*)-(.*)$ /parent-category/sub-category/$2/$1 [L,NC]

Plus d'informations: http://httpd.Apache.org/docs/current/rewrite/intro.html

Les expressions régulières (.*) signifient un ou plusieurs caractères, où:

  • . (point) signifie au moins un caractère;
  • * (étoile) signifie zéro ou plusieurs caractères;
1
phoops