2015-08-26 2 views
0

Как я могу перенаправить все файлы в /media/ в http://anothersite.com/media с mod_rewrite? Я направляю запросы образов промежуточного сайта в его основной каталог сайта.mod_rewrite активы в каталоге на другой сервер

не работает следующим образом:

<IfModule mod_rewrite.c> 
    RewriteEngine On 
    RewriteBase/
    RewriteRule ^media/(.*) http://anothersite.com/$1 [QSA,L] 
</IfModule> 

Не запутались с Apache конфигурации много - простите меня, если это хромой-орто вопрос.

+1

Вы можете использовать: 'RewriteRule^(СМИ) /.* http://anothersite.com/$1 [R = 301, NC, L]' – anubhava

+0

По запросу для '/ СМИ/image1.jpg 'Например, вы хотите обслуживать контент, найденный на' http: // anothersite.com/media/image1.jpg' или 'http: // anothersite.com/image1.jpg'? Первое предложение в вопросе говорит, что вам нужен первый URL-адрес, а «RewriteRule» - второй. Который из? – axiac

+0

@axiac последний - теперь покрыт ответом GentlemanMax – technopeasant

ответ

2

Поскольку вы перенаправляетесь на другой сайт, я считаю, что вам нужно вызывать 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(); 
+0

Хм, это тоже не работает для меня. Могу ли я записать эти запросы в файл для просмотра? Исправление ошибок в этом сервере за пределами меня – technopeasant

+0

Обычно я использую тестер, такой как [this] (http://htaccess.madewithlove.be/). Вы считали, что используете только локальный php-скрипт, чтобы получить файл с удаленного сервера? – GentlemanMax

+0

Я отредактировал свое решение, чтобы включить php-приемник в качестве возможного решения. – GentlemanMax

Смежные вопросы