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?
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 .
Réponse simple, je suis tombé sur moi-même.
En haut avant tout autre appel, ajoutez ce qui suit
RewriteRule ^(uploads) - [L]
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.
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.