另一台服务器

时间:2015-08-26 18:26:36

标签: apache .htaccess mod-rewrite redirect

如何使用/media/http://anothersite.com/media中的所有文件定向到mod_rewrite?我正在将临时站点的图像请求指向它的主站点目录。

以下不起作用:

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

没有太多搞乱Apache配置 - 如果这是一个蹩脚的问题,请原谅我。

1 个答案:

答案 0 :(得分: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();