2013-02-05 12 views
0

Je fais face à une situation intéressante. Voici ce qui se passe:Redirection d'expression régulière/301

URL actuelle Example1:

www.domain.com/red-widgets-cid-1234.html 

www.domain.com/red-widgets-cid-1234-1.html 

www.domain.com/red-widgets-cid-1234-1-1.html 

Canonical sur toutes les URL ci-dessus:

www.domain.com/red-widgets-cid-1234.html 

New URL: 
www.domain.com/red-widgets-cid-4567.html 

URL actuelle Example2:

www.domain.com/red-widgets-cid-1234+10.html 

www.domain.com/red-widgets-cid-1234+10-1.html 

www.domain.com/red-widgets-cid-1234+10-1-1.html 

Canonique sur All Au-dessus des URLs:

www.domain.com/red-widgets-cid-1234+10.html 

New URL: 
www.domain.com/red-widgets-cid-6789.html 

Je souhaite m'assurer que toutes les variantes de l'URL ci-dessus redirigent vers la nouvelle URL. Quelle wildcard 301 redirection/expression régulière puis-je utiliser pour y remédier?

Répondre

0

Essayez cette (ont pas testé):

# (perhaps you need to escape "+" as "\+", 
    # - can you really have a "+" in the URL?) 

    RewriteCond %{REQUEST_URI} ^/red-widgets-cid-1234+10+5(.*).html [NC] 
    RewriteRule (.*) %{HTTP_HOST}/american-red-widgets-cid-6789+5%1.html [QSA,L] 

    RewriteCond %{REQUEST_URI} ^/red-widgets-cid-1234+10(.*).html [NC] 
    RewriteRule (.*) %{HTTP_HOST}/red-widgets-cid-6789%1.html [QSA,L] 

    RewriteCond %{REQUEST_URI} ^/red-widgets-cid-1234(.*).html [NC] 
    RewriteRule (.*) %{HTTP_HOST}/red-widgets-cid-4567%1.html [QSA,L] 

La chose principale est de tester pour la plus longue URL « commune » en premier.
%1 signifie la première expression regexp de la dernière RewriteCond.
$1 signifie la première expression regexp du courant RewriteRule.

NB! Si la nouvelle URL doit être la même pour toutes les URL capturées par RewriteCond, vous devez ignorer %1, ce qui n'est nécessaire que si vous le souhaitez. american-red-widgets-cid-6789+5-1.html pour red-widgets-cid-1234+10+5-1.html

+0

Dans l'instruction RewriteRule, utilisons-nous% 1 ou $ 1? Aussi, et si nous traitons également avec: ** URLs actuels Exemple3: ** www.domain.com/red-widgets-cid-1234+10+5.html www.domain.com/red- widgets-cid-1234 + 10 + 5-1.html www.domain.com/red-widgets-cid-1234+10+5-1-1.html ** Canonique sur toutes les URLs ci-dessus: ** www.domain.com/red-widgets-cid-1234+10+5.html ** Nouvelle URL: ** www.domain.com/american-red-widgets-cid-6789+5.html Peut nous utilisons également des caractères génériques dans la zone "red-widgets" de l'URL pour les règles RewriteCond? L'application ne regarde que ce qui est après cid. – Nakul

+0

J'ai mis à jour ma réponse, mais vous devriez ajouter votre nouvelle question à votre question initiale, sinon c'est un peu déroutant. – 244an