Redirecionar site com .htaccess, mas excluir uma pasta

Eu quero redirect 301 um site inteiro, mas excluir tudo em uma pasta chamada ‘uploads’, que existe no diretório raiz. Eu pesquisei por isso, mas não inventei nada, ou não achei que o que vi estava certo.

Podemos quebrar isso?

Tente esta regra mod_rewrite :

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

Essa regra corresponde a qualquer caminho de URL que não comece com /uploads ou /uploads/ (que leva / está ausente no padrão devido à remoção de prefixo de caminho quando usado em arquivos .htaccess) e redireciona a solicitação para o caminho correspondente no exemplo .com .

Resposta simples eu só tropecei em mim mesmo.

No topo, antes de qualquer outra chamada, adicione o seguinte

 RewriteRule ^(uploads) - [L] 

Eu acho que você quer isso:

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

Se você receber 500 Internal Error , verifique se você tem um espaço entre } e ! na segunda linha.

Uma solução baseada em alias de mod

Redirecionar tudo, exceto uma pasta específica

Adicione a seguinte linha ao seu root / .htaccess:

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

Isso redirectá todas as páginas (excluindo / uploads / *) do domínio antigo para o novo domínio.