Подмена имен *.jpg в .htaccess

12
J
На сайте с 06.07.2011
Offline
160
6385

Подскажите пожалуйста, как реализовать такое:

К примеру есть папка: mydomain.com/contents/photos/ - в ней 1000 фото 1.jpg,2.jpg.., 1000.jpg

Как реализовать подмену имён, если вбить в браузере: mydomain.com/contents/photos/несуществующаякартинка.jpg - выводило рэндомно одну из тысячи картинок.

mydomain.com/contents/photos/несуществующаякартинка.jpg ---> mydomain.com/contents/photos/*.jpg

V
На сайте с 31.01.2008
Offline
125
#1

в теле страницы ссылки на изображения вида

<img src="image/1000.jpg" />

в шаблоне, на примере пандоры

<img src="[SITE]/image/[RAND-1-1000].jpg" />

а htaccess пишем

RewriteEngine on

RewriteRule ^image/(.*)$ /image.php?id=$1 [L]

создаем файл image.php и кидаем его в корень сайта


<?php
header("Content-type: image/jpeg");
echo file_get_contents('http://domain-img.ru/images/'.$_GET['id']);
?>
J
На сайте с 06.07.2011
Offline
160
#2
vitvvs:
в теле страницы ссылки на изображения вида


в шаблоне, на примере пандоры


а htaccess пишем



создаем файл image.php и кидаем его в корень сайта

Спасибо, я представляю примерно как это будет. Нужен полностью рабочий код.

W
На сайте с 10.05.2009
Offline
114
#3

А это и есть полностью рабочий код а если ума не хватает его реализовать, найми того у кого он есть

J
На сайте с 06.07.2011
Offline
160
#4
wolfston:
А это и есть полностью рабочий код а если ума не хватает его реализовать, найми того у кого он есть

Круто, я думаю тогда бы половины топиков на серче не было бы, если руководствоваться твоим советом "найми того у кого он есть". Есть же люди, которые готовы помочь безвозмездно.

dr_Min
На сайте с 29.07.2008
Offline
101
#5
vitvvs:
в шаблоне, на примере пандоры
<img src="[SITE]/image/[RAND-1-1000].jpg" />

Тогда уже наверно так

<img src="[SITE]/image.php?id=[RAND-1-1000].jpg" />

Но ТС вроде нужно место [RAND-1-1000], воткнуть транслит кея.

V
На сайте с 31.01.2008
Offline
125
#6
dr_Min:
Тогда уже наверно так

нет дорогой друг, именно так


<img src="[SITE]/image/[RAND-1-1000].jpg" />

потому что так

RewriteRule ^image/(.*)$ /image.php?id=$1 [L]
dr_Min:
Но ТС вроде нужно место [RAND-1-1000], воткнуть транслит кея.

с чего ты это взял? Вот что ему нужно

К примеру есть папка: mydomain.com/contents/photos/ - в ней 1000 фото 1.jpg,2.jpg.., 1000.jpg

тогда image.php будет выглядеть так


<?php
header("Content-type: image/jpeg");
echo file_get_contents('http://mydomain.com/contents/photos/'.$_GET['id']);
?>

ps чтобы вас не запутать - image.php и .htaccess кидается в корень дора

---------- Добавлено 12.01.2015 в 22:10 ----------

еще нюанс, если у вас пандора и файлы генерятся в html

тогда в htaccess сверху нужно прописать


Options +FollowSymlinks
AddHandler application/x-httpd-php .html

конечно же при условии что хост поддерживает php

Dos3
На сайте с 07.01.2011
Offline
363
#7

много раз уже была тема.

show_jpg.php


<?php
$img_dir = "http://";//путь до папки с картинками

if (isset($_GET['img'])) {

$name_image = preg_replace("#.*/#","",$_GET['img']);

$imgtypes = array('.jpg' => 'image/jpeg', '.jpeg' => 'image/jpeg', '.png' => 'image/png', '.gif' => 'image/gif');

header("Content-type: ".$imgtypes[strrchr(trim($name_image), '.')]);

my_Curl($img_dir."/".$name_image);
}

function my_Curl($url, $browsers='Mozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.9.2.3)')
{
$ch = curl_init();
curl_setopt($ch , CURLOPT_URL , $url);
curl_setopt($ch, CURLOPT_REFERER, true);
curl_setopt($ch , CURLOPT_USERAGENT , $browsers);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 30);
curl_setopt($ch, CURLOPT_TIMEOUT, 30);
curl_setopt($ch, CURLOPT_MAXREDIRS, 10);
curl_setopt($ch , CURLOPT_RETURNTRANSFER , true);
$file = curl_exec($ch);
curl_close($ch);

echo $file;
}

?>

.htaccess


RewriteEngine On
RewriteRule ^(.*gusi.*\.(jpg|gif|png|jpeg))$ show_jpg.php?img=$1 [L]

примеры вывода

<img src="gusi/images/1.jpg">

<img src="gusi/3.jpg">

<img src="gusi/images/123/4.jpg">

<img src="gusi/images/2.jpg">

<img src="gusi/5.jpg">

<img src="gusi.jpg">

gusi - это метка везде, заменить можно на любое слово

dr_Min
На сайте с 29.07.2008
Offline
101
#8

Елы палы. Прочтите заголовок топика))

Ему нужно сделать [translit].jpg, а не путь изменить ))

ТС молчит, а я же его мысль понял так:

В шаблоне пишем <img src="/contents/photos/[translit].jpg">, но переименованная картинка выгружалась как рандомная картинка из папки /contents/photos/

ТС, на сколько я знаю, хтаксесс не спосебен на рандомизацию. Можно сделать так <img src="/contents/photos/[RAND-1-1000]-[translit].jpg"> - /contents/photos/1.jpg

Но такгда получится 1000 картинок с тысячи тысяч разним названием.

voyajer
На сайте с 23.04.2007
Offline
104
#9

если речь идет не о генерации в пандоре, а о выводе рандомной картинки по рандомной ссылки, то можно попробовать таким образом

файл .htaccess кидаем в папку с картинками, в данном случае название "contents/photos"

Options +FollowSymLinks
RewriteEngine On
RewriteRule ^(.*?)\.(jpg|gif|png|jpeg)$ /img.php [L]

файл img.php заливаем в корень сайта

$folder="contents/photos";
$images=array();
if (is_dir($folder)) {
$handle = opendir($folder);
while ($subfile = readdir($handle)) {
if ($subfile == '.' or $subfile == '..') continue;
if (preg_match("#(\.jpg|\.gif|\.png|\.jpeg)#",$subfile)) array_push($images,$subfile);
}
closedir($handle);
}
header("Content-type: image/jpeg");
echo file_get_contents($folder.'/'.$images[rand(0,count($images)-1)]);

в результате по ссылке

<img src="http://ваш_сайт/contents/photos/bla-bla.jpg">
будет все время рандомная картинка.
XPraptor
На сайте с 15.10.2004
Offline
333
#10

voyajer все верно показал, но только в .htaccess не:

RewriteRule ^(.*?)\.(jpg|gif|png|jpeg)$ /img.php [L]

а :

RewriteRule ^contents/photos/(.*)\.(jpg|gif|png|jpeg)$ /img.php [L]

Так, как, иначе, все картинки на хостинге и дизайн сайта тож рандомизнуться, если как voyajer показал, сделать.

Плюс voyajer, жадность (?) убрать надо, иначе, если в имени файла картинки будет точка - то будет глюк сразу.

12

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий