web-dev-qa-db-fra.com

Rediriger le site avec .htaccess mais exclure un dossier

Je souhaite 301 rediriger un site Web entier, mais exclure tout dans un dossier appelé /uploads qui existe dans le /root répertoire.

J'ai cherché sur Google, mais je n'ai rien trouvé, ou je ne pensais pas que ce que j'avais vu était juste.

Pouvons-nous le casser?

54
PaulAdamDavis

Essayez cette règle mod_rewrite :

RewriteEngine on
RewriteRule !^uploads($|/) http://example.com%{REQUEST_URI} [L,R=301]

Cette règle correspond à tout chemin d'URL qui ne commence pas par /uploads ou /uploads/ (en tête / est manquant dans le modèle en raison de la suppression du préfixe de chemin lorsqu'il est utilisé dans les fichiers .htaccess) et redirige la demande vers le chemin correspondant sur example.com .

68
Gumbo

Réponse simple, je suis tombé sur moi-même.

En haut avant tout autre appel, ajoutez ce qui suit

RewriteRule ^(uploads) - [L]
54
PseudoNinja

Je pense que tu veux ça:

RewriteEngine on
RewriteCond %{REQUEST_URI} !^/uploads/
RewriteRule (.*) http://www.newdomain.com/$1 [R=301,L]

Si vous obtenez 500 Internal Error puis vérifiez que vous disposez d'un espace entre } et ! sur la deuxième ligne.

24
Dominic Rodger

Une solution basée sur mod-alias

Redirige tout sauf un dossier spécifique

Ajoutez la ligne suivante à votre racine/.htaccess:

RedirectMatch 301 ^/((?!uploads).*)$ http://newdomain.com/$1

Cela redirigera toutes les pages (hors/uploads/*) de votre ancien domaine vers le nouveau domaine.

10
starkeen