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

Форум Apache

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

 

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

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

тема: Просвятите ламера по mod_rewrite
 
 автор: Евгений Петров   (11.01.2006 в 01:01)   письмо автору
 
 

Не думал что в ближайшее время меня будет интересовать подобный вопрос, но пришлось :) У вас в статьях я почему то не нашел ничего про mod_rewrite но тем не менее - можно ли как то организовать такую штуку?
Нужно все такие ссылки (индексный файл с первым параметром с):
http://myurl.ru/?c=...

или
http://myurl.ru/index.php?o=...

переделать на:
http://myurl.ru/cat/?c=...

причем ссылки с другими параметрами оставить как есть, т.е. например:
http://myurl.ru/?id=...

или
http://myurl.ru/index.php?id=...

или
http://myurl.ru/script

оставить как есть.
Большущее заранее спасибо!!!

   
 
 автор: Евгений Петров   (12.01.2006 в 00:04)   письмо автору
 
   для: Евгений Петров   (11.01.2006 в 01:01)
 

Плиз хелп. Горю! Че то я пробовал пробовал, с папками все понятно, а вот как разобрать параметры...?

   
 
 автор: Евгений Петров   (12.01.2006 в 00:35)   письмо автору
 
   для: Евгений Петров   (12.01.2006 в 00:04)
 

Отчасти удалось что то сделать:
RewriteEngine on
Options +FollowSymlinks
RewriteBase /
RewriteCond %{QUERY_STRING} ^c=(.+)$
RewriteRule ^katalog/index.php$ /cat/index.php$1


Только не могли бы вы обьяснить мне что значит
Options +FollowSymlinks

и
RewriteBase /


Последнее насколько я понял убирает слеш в конце если таковой есть?

   
 
 автор: Евгений Петров   (12.01.2006 в 00:49)   письмо автору
 
   для: Евгений Петров   (12.01.2006 в 00:35)
 

И ещё один вопросик. Это вообще я все для чего делал? У меня на сайте стоит каталог и возникла необходимость перенести его в другую папку (он был в root теперь надо в katalog/) и чтобы не потерять посещаемость прибег к такому способу. Так вот вопрос, если заменять ссылки с [r] т.е. переписывать их в адресной строке. То адрес по идее изменится но содержимое страниц останется доступным по старым ссылкам. Не повлияет ли это на поисковики?

   
 
 автор: glsv (Дизайнер)   (12.01.2006 в 07:25)   письмо автору
 
   для: Евгений Петров   (12.01.2006 в 00:49)
 

>он был в root теперь надо в katalog/
А каталог /cat к этой задаче имеет какое-то применение?

>Не повлияет ли это на поисковики?
Ох... никто не может сказать как это на них повлияет. С одной стороны, у Вас будет стоять внешний редирект [r]. Сложно сказать, как это воспримут поисковики.... Скорее всего, все будет нормально - пройдут далее по редиректу.

   
 
 автор: Евгений Петров   (12.01.2006 в 12:10)   письмо автору
 
   для: glsv (Дизайнер)   (12.01.2006 в 07:25)
 

Да cat и katalog - это по сути одно и то же было :) Просто назвал в конечном итоге по другому. А нужно было ссылки вида:
http://myurl.ru/?c=... (т.е. каталог ледал в корне)
переделать на
http://myurl.ru/katalog/?c=... (физически каталог был перемещен в папку katalog и чтобы не потерять посещаемость нужно было сделать редирект на папку katalog на те же файлы)

   
 
 автор: glsv (Дизайнер)   (12.01.2006 в 07:18)   письмо автору
 
   для: Евгений Петров   (11.01.2006 в 01:01)
 

Меняем URL вида

http://myurl.ru/?c=...
и
http://myurl.ru/index.php?o=...

на
http://myurl.ru/cat/?c=..

RewriteEngine on
Options +FollowSymlinks 
RewriteBase / 
RewriteRule ^cat(.*) /index.php$1

Т.е. если кто-то обратится по URL http://myurl.ru/cat/?c=.. , то этот URL не должен отвечать ошибкой, а должен скрыто перенаправить запрос на URL http://myurl.ru/?c=...
Протестировал работу URL-ов вида

http://test.ru/cat/index.php?c=value
http://test.ru/cat/?c=value

Таким образом, правило срабатывает только если запрос направлен на несуществующую директорию /cat и не влияет на другие URL-ы.

Но, вы написали:
>Отчасти удалось что то сделать

RewriteCond %{QUERY_STRING} ^c=(.+)$ 
RewriteRule ^katalog/index.php$ /cat/index.php$1

Т.е. исходный URL - это "katalog/index.php"? или правильной была первоначальная постановка вопроса?

Options +FollowSymlinks - разрешает переход по символическим связям. Видимо, модуль mod_rewrite как раз используется их для замены одного пути на другой. Без этой опции mod_rewrite работать не будет.

RewriteBase / - директория, относительно которой осуществляется преобразование URL.
/ - относительно коневой директории сайта.

   
Rambler's Top100
вверх

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