Код, который вы разместили, является внутренним переписыванием , а не "перенаправлением". Но использованное вами условие исключило подкаталог /assets/images
(с использованием префикса !
), поэтому оно применяется ко всем другим каталогам, кроме того, который вы хотите!
Попробуйте выполнить что-то вроде следующего вместо этого в верхней части вашего .htaccess
файла:
# If an image does not exist in /assets/images then redirect to homepage
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^assets/images/[\w/-]+\.(png|jpg|gif)$ / [R=302,L]
Все сопоставление с образцом для URL выполняется в директиве RewriteRule
- нет необходимости использовать отдельное условие. Поэтому проверяются только запросы, похожие на изображения.
Нет необходимости проверять каталог, так как я предполагаю, что у вас нет каталогов, которые выглядят как имена файлов изображений.
Это позволяет использовать несколько подкаталогов. в пределах /assets/images
. например. /assets/images/foo/bar/abc.png
. Если все ваши изображения содержатся непосредственно внутри /assets/images
, вы можете удалить sla sh из класса символов [\w/-]
.
Также предполагается, что подкаталоги и имена файлов могут состоять только из символов a-z
, A-Z
, 0-9
, _
(подчеркивание) и -
(дефис).
Обратите внимание, что это 302 (временное) перенаправление.
ОДНАКО, это перенаправление имеет смысл только если изображения запрашиваются прямо в браузере. Если они встроены в элемент HTML img
, то перенаправление будет просто рассматриваться как разорванное изображение, если ваша домашняя страница на самом деле не возвращает изображение?!