Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум Apache

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Замена множества адресов на один
 
 автор: Владимир55   (15.01.2010 в 15:48)   письмо автору
 
 

В инструкции по работе с модулем mod_rewrite есть такой пример:
RewriteRule ^(.*)shop(.*)$ $1shop.cgi$2 
Если я правильно понял, то в этом случае в УРЛе, содержащем shop, эта часть адреса заменяется на shop.cgi.

Соотвественно, если потребуется заменить shop2 на shop.cgi, то придется написать вторую строку с этой инструкцией.

А можно ли одной строкой сделать коллективную замену? Чтобы все адреса, имеющие в своем составе shop, (например shop2, shop3, shop25155) заменялись на shop.cgi?

  Ответить  
 
 автор: heed   (15.01.2010 в 17:05)   письмо автору
 
   для: Владимир55   (15.01.2010 в 15:48)
 

^(.*)shop(.*)$ $1shop.cgi$2

какая-то неправильная подмена
, как будто пргопущен знак вопроса $1shop.cgi?$2

здесь два подсовпадения (.*) - $1 и $2
причём первая подстрока оставляется на своём месте
, т.е запрос подменяется на несколько адресов
firstshop.cgi
nextshop.cgi
76576566shop.cgi
........
Во второй (.*) может быть чего угодно, если есть знак вопроса на запрашиваемый адресс не повлияет
, а у cgi-приложений удобнее просто работать с QUERY_STRING , массив $_GET это чисто проделки php

  Ответить  
 
 автор: Loki   (15.01.2010 в 17:18)   письмо автору
 
   для: Владимир55   (15.01.2010 в 15:48)
 

Вы не совсем верно трактуете пример: не просто перенаправляется на shop.cgi, а еще и подставляет ему начало и конец от оригинального урл
иными словами, просто в урл заменяет shop на shop.cgi
так что хорошо бы увидеть примеры полного url, прежде чем советовать что-то

  Ответить  
 
 автор: Владимир55   (15.01.2010 в 17:30)   письмо автору
 
   для: Loki   (15.01.2010 в 17:18)
 

Действительно, пример с cgi неудачный и вводит в заблуждение.

А реально мне нужно вот что.

Есть несколько разных страниц, каждая из которых показывает графический файл.

На одной странице код такой:
<p><img border="0" src="foto/thumb1.jpg" width="186" height="140" alt="Пингвин"></p>

На другой такой
<p><img border="0" src="foto/thumb2.jpg" width="186" height="140" alt="Пингвин"></p>

На сто первой такой
<p><img border="0" src="foto/thumb101.jpg" width="186" height="140" alt="Пингвин"></p>


А в папке foto есть лишь один файл thumb.jpg. И надо сделать так, что бы изображение из этого файла воспроизводилось на всех страницах.

(На всякий случай - в папке foto других файлов нет. Поэтому можно использовать сам факт обращения к этой папке, если это упростит дело).

  Ответить  
 
 автор: heed   (15.01.2010 в 20:13)   письмо автору
 
   для: Владимир55   (15.01.2010 в 17:30)
 

В папке с этим thumb.jpg
,можно положить например такое

Options +FollowSymlinks
RewriteEngine On

RewriteRule ^thumb[0-1]*.jpg$ thumb.jpg
если не перепутал буквы, и если AllowOverride позволяет изменять Options

или вообще
RewriteRule ^,*$ thumb.jpg

или отдавать картинку скриптом, и анализировать цифры
RewriteRule ^thumb([0-1]*).jpg$ index.php?num=$1
, но в таком случае изменятся заголовки отдаваемые с картинкой , и возможно браузеры перестанут её кэшировать. А это плохо.)


//upd
буквы перепутал, везде вместо [0-1] должно быть [0-9]

  Ответить  
 
 автор: Владимир55   (16.01.2010 в 11:46)   письмо автору
 
   для: heed   (15.01.2010 в 20:13)
 

Все великолепно получилось!

Спасибо!

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования