Rediriger une page contenant un caractère spécifique vers une autre

Nouveau WRInaute
Bonjour à tous,

Alors voilà le soucis, j'ai deux pages, la première est comme ceci :
http://www.monsite.fr/boutique/produits/titre-de-mon-produit/

La seconde page est comme ceci :
http://www.monsite.fr/boutique/produits/titre-de-mon-produit-pdf/

Et je voudrais que toutes les URL content "-pdf" redirige directement vers le lien sans "-pdf" qui est une page bien distincte...

Est-ce possible ? Si oui comment faire ?

Autre chose, je veux que tous les liens contenant "-pdf" ne soit pas indexer, j'ai fait comme ceci dans robots.txt : Disallow: /boutique/produits/*-pdf$, est-ce correct ?

Un grand merci !
 
WRInaute discret
20cents a dit:
Alors voilà le soucis, j'ai deux pages, la première est comme ceci :
http://www.monsite.fr/boutique/produits/titre-de-mon-produit/

La seconde page est comme ceci :
http://www.monsite.fr/boutique/produits/titre-de-mon-produit-pdf/

Et je voudrais que toutes les URL content "-pdf" redirige directement vers le lien sans "-pdf" qui est une page bien distincte...

Est-ce possible ? Si oui comment faire ?

Bien sur que c'est possible, tout est possible ! :)

20cents a dit:
Autre chose, je veux que tous les liens contenant "-pdf" ne soit pas indexer, j'ai fait comme ceci dans robots.txt : Disallow: /boutique/produits/*-pdf$, est-ce correct ?

Peut-être, honnêtement je ne sais pas car j'utilise très peu (voir pas du tout) robots.txt.
Oublie ça et utilise plutôt ceci dans ton htaccess:

Code:
RewriteCond 	%{REQUEST_FILENAME} 	!-d
RewriteCond 	%{REQUEST_FILENAME} 	!-f
RewriteRule 	^(.*)/(.*)-pdf/$ 	 	$1/$2/? [R=301,L]

Avec ceci, tu fais d'une pierre deux coups: tu rediriges les urls avec "-pdf" vers les urls sans "-pdf" et tu interdis donc l'accès aux urls "-pdf"

EDIT: pour éviter de vérifier que ce n'est pas un répertoire ou un fichier existant à chaque vérification de règle, tu peux également utiliser cette manière moins générique mais parfaite pour ton cas:

Code:
RewriteRule 	^boutique/produits/(.+)-pdf/$ 	boutique/produits/$1/? [R=301,L]
 
Nouveau WRInaute
Merci beaucoup ! Malheureusement aucune des deux propositions ne semble fonctionner...
J'ai pour l'instant ceci :

Code:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
RewriteRule ^boutique/produits/(.+)-pdf/$ boutique/produits/$1/? [R=301,L]
</IfModule>

Je vois pas trop ou est le soucis... Sur chrome, j'obient ceci si je tape une url avec "-pdf" :
http://www.monsite.fr/customers/d/9/0/monsite.fr/httpd.www/boutique/pr ... e-pouvoir/

Il semble bien avoir retiré le -pdf, mais je vois ce que customers/d/9/0/... vient faire ici !

En tout ca un grand merci pour ton aide !
 
WRInaute discret
C'est en effet très étrange mais je vois déjà plusieurs erreurs dans ton htaccess.

Code:
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
------> RewriteRule . /index.php [L] <------
RewriteRule ^boutique/produits/(.+)-pdf/$ boutique/produits/$1/? [R=301,L]

La ligne avec les flèches redirige toutes tes urls (vers index.php), exceptés les dossiers/fichiers, qui ne matchent pas la première règle. Donc forcément, ta règle suivante pour le "boutique/produits/..." ne sera jamais évaluée. Il faut donc la remonter: les règles les plus précises avant les plus génériques --> très important quand tu mets en place une réécriture d'urls.
Il y a également des erreurs de syntaxe mais passons.

De plus, je vois que tu cherches à empêcher l'accès direct à index.php et à faire pointer les urls vers index.php. L'idée est bonne mais tu t'y prends mal car tu ne fais que des redirections "normales" et c'est donc mauvais pour le référencement (duplicate content possible). Il faut donc rediriger de façon permanente (301) index.php vers la racine du site et faire pointer les urls (qui ne sont ni dossier, ni fichier) vers index.php.
Mais là, attention, tu vas tomber sur une boucle de redirection, je t'invite donc à consulter l'article que j'ai tout récemment publié à ce sujet: https://www.webrankinfo.com/forum/t/tutoriel-eviter-les-boucles-de-redirection.168006/.

En somme, je pense que le code qui correspond à ton cas ressemble à quelque chose comme ça:

Code:
RewriteEngine on

RewriteRule     ^boutique/produits/(.+)-pdf/$     boutique/produits/$1/? [R=301,L]

RewriteCond    %{REQUEST_FILENAME}     !-d
RewriteCond    %{REQUEST_FILENAME}     !-f
RewriteRule     ^(.*)$     index.php [E=BREAK:1,L]

RewriteCond    %{ENV:REDIRECT_BREAK}     !^1$
RewriteRule     ^index.php$     http://%{HTTP_HOST}/ [R=301,L]

PS: sauf erreur de ma part, les "RewriteCond" ne sont pas cumulables pour les "RewriteRule". En gros, les RewriteCond ne seront effectifs que pour le premier RewriteRule rencontré (je te dis ça car dans le code que tu as posté tu pensais surement que les 2 "RewriteCond" était là pour les 2 "RewriteRule" qui suivent).
 
WRInaute discret
Je comprends bien ta question mais je vois pas l'url exacte que tu demandes.

En gros, tu as
Code:
http://www.monsite.fr/boutique/produits/reliques-le-quatrieme-pouvoir-pdf/
redirigé vers
Code:
http://www.monsite.fr/boutique/produits/reliques-le-quatrieme-pouvoir/

Et tu voudrais ceci ?
Code:
http://www.monsite.fr/boutique/produits/reliques-le-quatrieme-pouvoir-pdf-rid=xxxxxx

Je vois pas bien la structure de l'url que tu désires.
 
Nouveau WRInaute
En fait la page suivante :
http://www.monsite.fr/boutique/produits/reliques-le-quatrieme-pouvoir-pdf/

doit être redirigée vers
http://www.monsite.fr/boutique/produits/reliques-le-quatrieme-pouvoir/

sauf si un l'url contenant "-pdf" est suivie par d'autre éléments comme dans ce cas ci :
http://www.monsite.fr/boutique/produits/reliques-le-quatrieme-pouvoir-pdf/&orderid=xxxxxx

dans ce cas là pas de redirection. Donc s'il y a des caractères après le "/" on ne redirige pas la page vers sons équivalent sans "-pdf".

Je sais pas si je suis clair... :/
 
WRInaute discret
Ok j'ai bien compris.

Normalement c'est mieux d'éviter ce genre de réécriture pour le référencement mais passons.
Je pense que tu devrais tester le query string (RewriteCond %{QUERY_STRING}) car vu la présence du "&" cela devrait probablement figurer dans cette variable.

Essayes ceci:
Code:
RewriteEngine on

RewriteCond    %{QUERY_STRING}     !^&orderid=(.+)$
RewriteRule     ^boutique/produits/(.+)-pdf/$     boutique/produits/$1/? [R=301,L]

RewriteCond    %{REQUEST_FILENAME}     !-d
RewriteCond    %{REQUEST_FILENAME}     !-f
RewriteRule     ^(.*)$     index.php [E=BREAK:1,L]

RewriteCond    %{ENV:REDIRECT_BREAK}     !^1$
RewriteRule     ^index.php$     http://%{HTTP_HOST}/ [R=301,L]
 
Discussions similaires
Haut