Поскольку вы перенаправляетесь на другой сайт, я считаю, что вам нужно вызывать mod_proxy
вместо mod_rewrite
. вы делаете это, изменяя [QSA, L]
на [P]
. Так что-то вроде этого:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase/
RewriteRule ^media/(.*) http://anothersite.com/media/$1 [P]
</IfModule>
В противном случае ваше правило перезаписи выглядит хорошо.
Возможно, лучшей альтернативой этому может быть локальный PHP-скрипт, который загружает и возвращает изображение, на которое вы перенаправляете.
В этом случае ваше правило перезаписи будет выглядеть следующим образом:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase/
RewriteRule ^media/(.*) /imageFetcher.php?img=$1 [QSA, L]
</IfModule>
Затем вам нужно будет создать файл imageFetcher.php
. со следующей
<?php
//Do some checks to make sure this request came from your site, you won't want external users accessing this script
$img_file = $_GET['img'];
$img_data = file_get_contents("http://anothersite.com/$img_file");
//Possibly verify that $img_data is a valid image file using imgjpeg(), imgpng(), etc
header('Content-Type: image/jpeg'); //This assumes your image is a jpeg. If the image could be a png/gif/etc you'll need to do some logic to set the proper header.
echo $img_data;
exit();
Вы можете использовать: 'RewriteRule^(СМИ) /.* http://anothersite.com/$1 [R = 301, NC, L]' – anubhava
По запросу для '/ СМИ/image1.jpg 'Например, вы хотите обслуживать контент, найденный на' http: // anothersite.com/media/image1.jpg' или 'http: // anothersite.com/image1.jpg'? Первое предложение в вопросе говорит, что вам нужен первый URL-адрес, а «RewriteRule» - второй. Который из? – axiac
@axiac последний - теперь покрыт ответом GentlemanMax – technopeasant