Редирект изображений на другой домен
Подскажите, пожалуйста, как настроить 301 редирект для изображений с одного домена на другой. Например: https://site1.com/uploads/posts/image.jpg на https://site2.com/uploads/posts/image.jpg
Все изображения будут находится в папке /uploads/, в которой могут быть различные папки.
Пробовал сделать редирект в файле .htaccess, но он не работает. Скорее всего из-за того что статические файлы обрабатываются через nginx. В конфигурационном файле прописывал правило, но оно не работает:
location /uploads/ {
rewrite ^(.*)$ $scheme://site2.com/$1 redirect;
}
Операционная система: Debian 10
Ответы (2 шт):
Сейчас ваши изображения обрабатываются в location ~* ^.+\.(jpg|jpeg|gif|png|svg|js|css|mp3|ogg|mpe?g|avi|zip|gz|bz2?|rar|swf)$
Поместите внутрь обеих блоков server следующий блок:
location ^~ /uploads/ {
rewrite ^(.*)$ $scheme://site2.com/$1 permanent;
}
Указанные инструкции будут перенаправлять запросы, Url которых начинается с /uploads на домен site2.com, а остальные изображения будут обрабатываться прежним location ~* ^.+\.(jpg|jpeg|gif|png|svg|js|css|mp3|ogg|mpe?g|avi|zip|gz|bz2?|rar|swf)$
Спасибо всем, кто откликнулся. Получилось решить данную задачу. Этот комментарий с решением оставляю, может быть кому-то пригодится.
Для настройки редиректа изображений с одного домена на другой в первую очередь следует понять, кто обрабатывает статические файлы (изображения и т.п.). Если ngnix, то правила в .htaccess не будут работать.
Чтобы настроить редирект нужно прописать следующие строчки в конфигурационном файле ngnix конкретного домена (с которого нужен редирект):
location /dir/ {
return 301 https://domain.com$request_uri;
}
где:
- /dir/ - папка изображений в которой находятся изображения (в том числе будет работать и с вложенными подпапками, то есть не нужно перечислять все вложенные подпапки)
- domain.com - домен на который нужен редирект
По поводу использования rewrite или return. Вот что пишут на просторах Интернета:
return предпочтительнее rewrite потому, что rewrite требует интерпретации регулярного выражения — ^(.*)$ — и создания пользовательской переменной ($1) , что на самом деле эквивалентно встроенной переменной $request_uri
Я использовал конструкцию "return 301", благодаря которой нет никаких промежуточных редиректов.