Я хочу 301 перенаправить весь сайт, но исключить все в папке с именем /uploads, которая существует в каталоге /root.
/uploads
/root
Я гуглил по этому поводу, но ничего не придумал, или я не думал, что то, что видел, было правильным.
Можем ли мы взломать это?
Попробуйте это mod_rewrite правило:
RewriteEngine on RewriteRule !^uploads($|/) http://example.com%{REQUEST_URI} [L,R=301]
Это правило соответствует любому URL-пути, который не начинается с /uploads или /uploads/ (ведущий / отсутствует в шаблоне из-за удаления префикса пути при использовании в файлах .htaccess) и перенаправляет запрос на соответствующий путь в example.com .
/uploads/
/
Простой ответ. Я просто наткнулся на себя.
Вверху перед любыми другими звонками добавьте следующее
RewriteRule ^(uploads) - [L]
Я думаю, вы хотите это:
RewriteEngine on RewriteCond %{REQUEST_URI} !^/uploads/ RewriteRule (.*) http://www.newdomain.com/$1 [R=301,L]
Если вы получили 500 Internal Error, то еще раз проверьте, что у вас есть пробел между } и ! во второй строке.
500 Internal Error
Решение на основе мод-псевдонима
Перенаправить все, кроме определенной папки
Добавьте следующую строку в корень / .htaccess:
RedirectMatch 301 ^/((?!uploads).*)$ http://newdomain.com/$1
Это перенаправит все страницы (кроме / uploads / *) со старого домена на новый домен.