web-dev-qa-db-fra.com

Apache réécrit l'URL réécrite existante

Je sais comment créer des règles de réécriture dans Apache, mais ce que je ne sais pas, c'est comment réécrire une URL précédemment réécrite.

Ceci est une ancienne URL

/boats-for-sale/fairline-squadron-55/1280

et j'ai besoin de rediriger vers

/brokerage/boats-for-sale/boat/1280=-fairline-squadron-55

Comment est-ce possible? Je suppose que je peux créer une règle qui fera de cette forme toutes les règles qui tombent dans ce format

1
Peter Griffin

Je ne peux pas parce que c'est Joomla qui a créé les URL SEF et qu'elles ne sont pas stockées dans le fichier .htaccess. J'avais besoin d'ajouter des redirections car l'URL avait maintenant changé et Google les aurait mis en cache.

On dirait que vous avez juste besoin d'un redirection. L'URL a changé. Vous souhaitez donc rediriger l'ancien vers le nouveau pour le référencement. (On ne comprend pas ce que vous entendez par "réécrire l'URL réécrite existante" - comme @closetnoc l'a mentionné dans les commentaires, vous devriez idéalement "corriger" le première réécriture dans ce cas. Mais les URL de SEF dans Joomla ne sont pas " réécrit "dans ce sens.)

Toute redirection que vous implémenterez dans .htaccess devra être utilisée avant le Joomla contrôleur frontal.

Il n'est pas clair à quel point vous avez besoin de "générique" (combien d'URL avons-nous??), Mais pour rediriger littéralement l'URL comme indiqué, vous pouvez faire quelque chose comme:

RewriteRule ^boats-for-sale/fairline-squadron-55/1280 /brokerage/boats-for-sale/boat/1280=-fairline-squadron-55 [R,L]

(NB: Que =- dans le substitution ne semble pas un peu à sa place?)

Pour une solution plus générique, peut-être quelque chose comme:

RewriteRule ^(boats-for-sale)/([^/]+)/(\d+) /brokerage/$1/boat/$3=-$2 [R,L]

Cela redirigera l'URL ci-dessus et toute URL de la forme /boats-for-sale/<anything>/<number> vers /brokerage/boats-for-sale/boat/<number>=-<anything>.

Modifiez la R (temporaire 302) en R=301 (permanent) uniquement lorsque vous avez confirmé que tout fonctionne correctement - pour éviter les problèmes de mise en cache.

1
MrWhite