Массовый редирект изображений .htaccess

P
На сайте с 24.08.2019
Offline
0
303

Добрый день,

Реально ли прописать правило Rewriterule для массового редиректа изображений у которых сменилось название, пример изменения ниже:

папка/фото/140010(1).jpg -> папка/фото/140010-1.jpg

папка/фото/140010(2).jpg -> папка/фото/140010-2.jpg

папка/фото/140010(2).jpg -> папка/фото/140010-2.jpg

И второе правило

папка/фото/140010(small).jpg -> папка/фото/140010small.jpg

папка/фото/140010(small)-1.jpg -> папка/фото/140010small-1.jpg

папка/фото/140010(small)-2.jpg -> папка/фото/140010small-2.jpg

Помогите разобраться, вручную убиться можно:confused:

J
На сайте с 20.02.2014
Offline
97
jkm
#1

RedirectMatch 301 ^(.+)\((\d+)\)(\.jpg)$ $1-$2$3

RedirectMatch 301 ^(.+)\((small)\)((?:-\d+|)\.jpg)$ $1$2$3

Или

RewriteEngine on

RewriteRule ^(.+)\((\d+)\)(\.jpg)$ /$1-$2$3 [L,R=301]
RewriteRule ^(.+)\((small)\)((?:-\d+|)\.jpg)$ /$1$2$3 [L,R=301]
P
На сайте с 24.08.2019
Offline
0
#2

Круть) Спасибо огромное!!

Какой способ эффективней? Или нет разницы?

---------- Добавлено 24.08.2019 в 19:48 ----------

Не учел момент, попадаются фото с заглавными буквами, редирект на прописные:

папка/фото/14AB10(1).jpg -> папка/фото/14ab10-1.jpg

папка/фото/14AB10(2).jpg -> папка/фото/14ab10-2.jpg

папка/фото/14AB10(2).jpg -> папка/фото/14ab10-2.jpg

И второе правило

папка/фото/14AB10(small).jpg -> папка/фото/14ab10small.jpg

папка/фото/14AB10(small)-1.jpg -> папка/фото/14ab10small-1.jpg

папка/фото/14AB10(small)-2.jpg -> папка/фото/14ab10small-2.jpg

Полагаю нужно добавить чтоб первая переменная всегда выаодилась прописными символами?

S
На сайте с 30.09.2016
Offline
469
#3
Polearmik:
попадаются фото с заглавными буквами, редирект на прописные

Если не знаете, как буковки называются, пишите проще: маленькие букаффки, большие букаффки.

По-видимому, эта ссылочка поможет:

https://proadminz.ru/htaccess-redirekt-url-v-nizhniy-registr/

Отпилю лишнее, прикручу нужное, выправлю кривое. Вытравлю вредителей.
J
На сайте с 20.02.2014
Offline
97
jkm
#4

Начиная с версии Apache 2.4 есть expr

RewriteEngine on

RewriteRule ^(.+)\((\d+)\)(\.jpg)$ /$1-$2$3 [L,R=301]
RewriteRule ^(.+)\((small)\)((?:-\d+|)\.jpg)$ /$1$2$3 [L,R=301]

RewriteCond expr "tolower(%{REQUEST_URI}) =~ /(.+)/"
RewriteRule [A-Z][^/]*(small|-\d+)\.jpg$ %1 [L,R=301]

Если есть доступ править настройки VirtualHost, то можно использовать RewriteMap.

В VirtualHost добавить:

RewriteMap lc int:tolower

А в .htaccess

RewriteEngine on

RewriteRule ^(.+)\((\d+)\)(\.jpg)$ /${lc:$1}-$2$3 [L,R=301]
RewriteRule ^(.+)\((small)\)((?:-\d+|)\.jpg)$ /${lc:$1}$2$3 [L,R=301]
P
На сайте с 24.08.2019
Offline
0
#5
Sitealert:
Если не знаете, как буковки называются, пишите проще: маленькие букаффки, большие букаффки.
По-видимому, эта ссылочка поможет:
https://proadminz.ru/htaccess-redirekt-url-v-nizhniy-registr/

Ну подзабыл, с кем не бывает:D

---------- Добавлено 24.08.2019 в 21:39 ----------

jkm:
Начиная с версии Apache 2.4 есть expr

Отличный вариант, спасибо!!

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий