modrewrite на другой сервер, если файл / изображение не найдено - PullRequest
1 голос
/ 27 февраля 2011

Привет! Я работаю над локальной копией удаленного сайта, и мне не нужно загружать все изображения, связанные с сайтом, поэтому я подумал, что могу придумать правило mod_rewrite для получения изображений из удаленный сервер, если не найден

Я хочу перенаправить любой запрос изображения, который приведет к 404 на удаленный сервер т.е. как то так:

^localpath(.*) http://otherhost/localpath$1

это код, который у меня есть

<IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteCond %{REQUEST_FILENAME} -f [NC]
    RewriteRule ^/(.*\.(png|gif|jpg|jpeg)) https://www.exmple.com/$1 [NC,P,L]
 </IfModule>  

Страница все еще дает мне 404 для изображений, которые находятся на удаленном сервере, поэтому это правило не работает.

Я знаю, что htaccess обрабатывается, потому что используются правила позже в блоке ifModule mod_rewrite.c. (я упростил мой пример кода, но это первое правило в блоке ifModule mod_rewrite.c)

редактировать Этот код работает для перенаправления всех 404

RewriteCond %{REQUEST_FILENAME} !-f [NC]
RewriteRule   ^(.+) https://www.example.com/$1 [L]

1 Ответ

2 голосов
/ 27 февраля 2011

В вашем RewriteCond должно быть !-f, поэтому правило применяется к файлам, которые не существуют.

Также $1 будет только расширением файла, потому что эта группа будет проанализирована первой. Я думаю, что вы хотите $2.

Файлы в подпапках не начинаются с / в RewriteRule, поэтому вы, вероятно, захотите удалить это и из шаблона сопоставления.

...