6 votes

301 redirection uniquement si l'URI ne contient pas une chaîne spécifique

J'ai un site web drupal qui a été divisé en deux sites web séparés, et j'ai maintenant besoin de mettre en place des règles de réécriture afin de générer du trafic vers le nouveau site.

Le site web original ressemble à ceci :

http://www.website.com (frontpage)
http://www.website.com/web1/subpage1 (subpage)
http://www.website.com/web1/subpage2 (subpage)
http://www.website.com/subpage3 (subpage)
http://www.website.com/subpage4 (subpage)

Toutes les références aux sous-pages qui ne sont pas dans la catégorie web1 ont été supprimées du site web, mais les pages sont toujours publiées et apparaissent toujours dans Google.

J'ai besoin d'une règle de réécriture qui redirige de "website.com" vers la page d'accueil de "new-website.com" si l'utilisateur essaie d'accéder à une page qui n'est pas la page d'accueil et qui n'est pas dans la catégorie web1.

Je suppose qu'une règle de réécriture vérifiant la présence de la chaîne "web1" dans l'URI serait la réponse à mon problème, mais je n'ai malheureusement aucune idée de la manière d'écrire la syntaxe.

Toute aide serait appréciée.

Merci d'avance.


EDIT :

Mon fichier htaccess avec la solution proposée par @zessx :

Options -Indexes
Options +FollowSymLinks

DirectoryIndex index.php

RewriteEngine on
RewriteBase /

RewriteCond %{HTTP_HOST} ^my-website\.com$ [NC]
RewriteRule ^(.*)$ http://www.my-website.com/$1 [L,R=301]

RewriteCond %{REQUEST_URI} !web1
RewriteRule  ^(.+)$ http://www.my-new-website.com [L,R=301]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} !=/favicon.ico
RewriteRule ^(.*)$ index.php?q=$1 [L,QSA]

9voto

zessx Points 17769

C'est ce dont vous avez besoin :

RewriteEngine on
RewriteBase /

RewriteCond %{REQUEST_URI} !web1

RewriteRule  ^(.+)$ http://new-website.com [L,R=301]

1voto

MatDK Points 91

Un de mes collègues a trouvé une solution :

RewriteCond %{REQUEST_URI} !^/web1(/|$)
RewriteCond %{REQUEST_URI} !^/admin(/|$)
RewriteCond %{REQUEST_URI} !^/$
RewriteRule ^([\w/]*)$ http://www.new-website.com [L]`

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X