Удалите переменную часть URL-адреса изображения с помощью .htaccess

#regex #.htaccess #mod-rewrite #url-rewriting

Вопрос:

У меня есть изображение, доступное по следующему URL-адресу:

 https://localhost/hta/-7524-34-B.webp
 

Мне нужно иметь возможность получить доступ к тому же изображению с URL-адресом, как показано ниже, и удалить <something> часть:

 https://localhost/hta/<something>-7524-34-B.webp
 

Как я могу это сделать с .htaccess помощью ?

Обновить:

Я добавил следующее .htaccess :

 RewriteEngine On
RewriteRule ^.*?(?=amp;). /hta/$1 [NC,L]
 

Когда я пишу следующий URL-адрес, изображение не открывается. Только перечисление hta каталога.

 http://localhost/hta/something-elseamp;-7524-34-B.webp
 

Комментарии:

1. Вам придется быть немного более точным… Это или нет, что ваш фактический файл в физической файловой системе на стороне сервера называется -7524-34-B.webp и что он находится на DOCUMENT_ROOT вашем хосте http? И что «что-то другое» на самом деле не имеет отношения к запросу? Тогда ответ на ваш вопрос: «да». И вы найдете множество существующих примеров здесь, на SO, для правила перезаписи, которое вам нужно для этого реализовать.

Ответ №1:

Чтобы внутренне переписать URL-адрес формы /hta/<something>-7524-34-B.webp на /hta/-7524-34-B.webp (удаление <something> ), вы можете сделать что-то вроде следующего в верхней части корневого .htaccess файла:

 RewriteEngine On
RewriteRule ^hta/[^/] (-7524-34-B.webp)$ hta/$1 [L]
 

Регулярное выражение [^/] совпадает <something> , которое отбрасывается. Оставшаяся часть URL-пути -7524-34-B.webp фиксируется, и на нее делается ссылка в строке подстановки (2-й аргумент) с $1 обратной ссылкой.

Комментарии:

1. Большое вам спасибо! если динамическое имя файлов изображений my-7524-34B.webp похоже на другое-изображение. webp как я могу это сделать

2. @OnderAkbulut Просто измените -7524-34-B.webp часть регулярного выражения на another-image.webp . Обратная косая черта-экранирование необходимо перед буквальной точкой, чтобы свести на нет ее особое значение.

3. хорошо, братан, но я не могу сделать это вручную, это происходит из бд 🙁