Автоматическое изменение ссылок URL из внутреннего источника на внешний - PullRequest
1 голос
/ 30 января 2011

Я хотел бы установить все ссылки на изображения (на самом деле это просто ссылки на определенную папку),

например. mywedomain.com/images/myimage.jpg, где mywebdomain.com/images/myimage.jpg будет фактически указывать на mycdn.com/images/myimage.jpg.

Но сохраните внутреннюю ссылку в самом коде / разметке. Мне интересно, как с этим справиться?

Thx!

1 Ответ

0 голосов
/ 30 января 2011

Зависит от того, находится ли он на одном сервере или нет, как именно вам следует это обрабатывать.

Если он находится на том же сервере и в корне документа, это будет проще всего с переписать, используя mod_rewrite.

Внутри вашего основного каталога .htaccess file:

RewriteEngine on
RewriteBase /

RewriteRule ^/images/(.+)$ /mycdn.com/images/$1 [L]

Если он не находится в корне документа или на другом сервере, перенаправление может быть проще.

RedirectMatch ^/images/(.+)$ http://mycdn.com/images/$1 

Хотя это будет заметно на клиенте, если он просматривал журнал запросов.Если вы хотите, чтобы он был прозрачным, то вы можете прокси-запрос на вашем сервере.

Создайте файл PHP (или другой язык, который вы используете, вы упоминаете LAMP, следовательно, PHP).

<?php

$reqImage = $_GET['image'];
$mimeTypes = array('gif' => 'gif', 'jpg' => 'jpeg', 'jpeg' => 'jpeg',
                   'png' => 'png');

$matches = array();
if (preg_match("/^[-a-zA-Z0-9_]+\.(gif|jpg|png)$/", $reqImage, $matches)) {
   header('Content-Type: image/' . $mimeTypes[$matches[1]]);
   @readfile("http://mycdn.com/images/" . $reqImage);
} else {
   header('HTTP/1.0 404 Not Found');
}

exit;

Обратите внимание на необходимость выдавать тип интернет-медиа при предоставлении изображения, поскольку Apache будет ожидать чего-то отличного от PHP-файла и обычно обрабатывает это для вас.

...