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

Форум Apache

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

 

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

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

тема: mod_rewrite тонкости дела
 
 автор: ozono   (19.12.2006 в 12:57)   письмо автору
 
 

Вот какое дело......... тут многие когда нибудь должны работать с модулем реврайт предоставленным только сервером Апачи. Так вот давай те раз и навсегда напишем несколько примеров которые на все 100% работают и будут понятны всем!!!

1. я лично сам проверил вот что


RewriteEngine   on
RewriteCond %{HTTP_HOST} ^test1.ru$ [NC]
RewriteRule ^(.*)$ http://www.test1.ru/$1 [R=301,L]


это означает что как бы вы не ввели test1.ru в адрессном баре реврайт превратит его в www.test1.ru

2. я сам сколько не старался так и не смог написать правильно вот такую вот штуку:


моя рабочая ссылка выглядит вот в такой схеме http://www.test1.ru/?kk&top

а для удобства и для некоторых других соображений хочеться чтоб
ссылка выглядила аккуратно и правильно а точнее вот так http://www.test1.ru/kk/top/


важно учитывать что выражения kk и top будут менятся


как правильно и корректно написать в реврайте чтоб все работало


важная делать этой работы в том что когда я впишу в адресный бар ссылку http://www.test1.ru/kk/top/

броузер должен сделать внутри себя реврайт и открыть страницу http://www.test1.ru/?kk&top и при этом
в адрес баре не меняется ссылка http://www.test1.ru/kk/top/



-------------------------------------------------------------------------------------------------------

ПУСТЬ ВСЕ ЗНАТОКИ РЕГУЛЯРНЫХ ВЫРАЖЕНИЙ И ВСЕ ТЕ КТО УЖЕ ИМЕЮТ ПРАКТИКУ В РЕВРАЙТЕ СОБРАЛИСЬ И ПОМОГЛИ НАМ ВСЕМ В ОДНОЙ ЭТОЙ ТЕМЕ!!!!


-------------------------------------------------------------------------------------------------------
-------------------------------------------------------------------------------------------------------
ЛЮДИ ВСЕ СВОИ НОВЫЕ ПРИМЕРЫ С ИНТЕРЕСНЫМИ ТОНКОСТЯМИ ПИШИТЕ ТУТ ЧТОБ ВСЕ ЗАШЕДШИЕ ВИДЕЛИ КАК ВСЕ НАДО ДЕЛАТЬ!

   
 
 автор: ozono   (21.12.2006 в 16:01)   письмо автору
 
   для: ozono   (19.12.2006 в 12:57)
 

КТО НИБУДЬ ДАЙТЕ ОТВЕТ НА МОД_РЕВРАЙТ!!!!

   
 
 автор: cheops   (21.12.2006 в 22:55)   письмо автору
 
   для: ozono   (19.12.2006 в 12:57)
 

Задача может быть решена следующим образом
RewriteEngine On 
RewriteBase / 
RewriteRule ([a-z]+)/([a-z]+)/ get.php?$1&$2


PS Множество примеров можно найти по ссылке.
PPS Для отладки часто удобно включить журналирование модуля mod_rewrite, поместив в контейнер виртуального хоста следующие директивы
    RewriteLog logs/rewrite.log
    RewriteLogLevel 9

Директива RewriteLogLevel определяет уровень подробности, чем он меньше - тем менее подробно будет вестись логгирование.

   
 
 автор: ozono   (22.12.2006 в 12:57)   письмо автору
 
   для: cheops   (21.12.2006 в 22:55)
 

спасибо за такую помошь!!!! но вот в чем дело:

тут возникают вопросы следующие

1. После того как я пишу например www.test1.ru/kk/pp ( ейтейственно он открывает внутри себя www.test1.ru/index.php?kk&pp) -- мои рисунки не показываются

у меня есть в папке images/logo.jpg но после реврайта на странице картинка иммет линк /kk/pp/images.jpg ==== а нужно чтоб он все равно открывал images/logo.jpg


2. когда я ввожу www.test1.ru/index.php?kk&pp нужно чтоб реврайт превратил его в www.test1.ru/kk/pp но при этом открывал www.test1.ru/index.php?kk&pp (т.е. в адресс баре чтоб всегда было в такой форме www.test1.ru/kk/pp)

   
 
 автор: cheops   (22.12.2006 в 22:51)   письмо автору
 
   для: ozono   (22.12.2006 в 12:57)
 

>когда я ввожу www.test1.ru/index.php?kk&pp нужно чтоб реврайт превратил его в www.test1.ru/kk/pp
Здесь не очень понятно, вбообще модуль mod_rewrite такие осуществляет лишь одно преобразование из www.test1.ru/index.php?kk&pp в www.test1.ru/kk/pp при помощи mof_rewrite преобразование осуществить не удастся.

   
 
 автор: ozono   (23.12.2006 в 11:02)   письмо автору
 
   для: cheops   (22.12.2006 в 22:51)
 

а как насчет картинеок,,,,?????

у меня при реврайте ссылки на странице к картинкам меняется!!!!!

image/logo.jpg превращается в kk/pp/image/logo.jpg как толдьког произсходит реврайт!!!!

как быть?

   
 
 автор: glsv (Дизайнер)   (24.12.2006 в 11:27)   письмо автору
 
   для: ozono   (23.12.2006 в 11:02)
 

Необходимо сделать отдельное преобразование для изображений

RewriteEngine on 
Options +FollowSymlinks 
RewriteBase / 

# Отдельное преобразование для картинок
RewriteRule (.*)/images/(.*) images/$2 [L]

# А здесь для всего остального (если в имени файла нет подстроки images...)
RewriteCond %{REQUEST_URI} !.*images.*
# то преобразуем имя файла в
RewriteRule ([a-z]+)/([a-z]+)/? index.php?$1&$2

   
 
 автор: ozono   (25.12.2006 в 14:12)   письмо автору
 
   для: glsv (Дизайнер)   (24.12.2006 в 11:27)
 

эту систему я понял большое спасибо


RewriteEngine on 
Options +FollowSymlinks 
RewriteBase / 

# Отдельное преобразование для картинок
RewriteRule (.*)/images/(.*) images/$2 [L]

# А здесь для всего остального (если в имени файла нет подстроки images...)
RewriteCond %{REQUEST_URI} !.*images.*
# то преобразуем имя файла в
RewriteRule ([a-z]+)/([a-z]+)/? index.php?$1&$2 




все что надо я сделал но есть еше одно НО))))

когда я ввожу test1.ru/kk/pp2 он все равно открывает test1.ru/kk/pp
я понимаю что все это из-за этой строки

RewriteRule ([a-z]+)/([a-z]+)/? index.php?$1&$2 


но вот куда именно впихнуть встроку [0-9] я не знаю!!!!!!

я пробывал так но не получилось

RewriteRule ([a-z]+)/([a-z][0-9]+)/? index.php?$1&$2 

   
 
 автор: ozono   (25.12.2006 в 14:15)   письмо автору
 
   для: ozono   (25.12.2006 в 14:12)
 

я нашел -------------


RewriteRule ([a-z]+)/([a-z0-9]+)/? index.php?$1&$2


так правильно???

у меня работает так

   
 
 автор: ozono   (25.12.2006 в 14:23)   письмо автору
 
   для: ozono   (25.12.2006 в 14:12)
 

glsv за все еше раз пишу спасибо!!!!!



тут одна деталь которую я забыл тебе сказать


у меня ссылка также может быть в форме test1.ru/kk/ в этом случае реврайт не работает!!!

можно ли сделать так чтоб все что ты написал осталось и + еше одно условие на то что если будет test1.ru/kk/ то перевести в test1.ru/index.php?kk


так возможно???? приплюсовать еше одно условие для кк???

   
 
 автор: glsv (Дизайнер)   (26.12.2006 в 05:40)   письмо автору
 
   для: ozono   (25.12.2006 в 14:23)
 

Нужно добавить еще одно правило RewriteRule. Вот так.

RewriteEngine on  
Options +FollowSymlinks  
RewriteBase /  

# Отдельное преобразование для картинок 
RewriteRule (.*)/images/(.*) images/$2 [L] 

# А здесь для всего остального (если в имени файла нет подстроки images...) 
RewriteCond %{REQUEST_URI} !.*images.* 
RewriteRule ^([a-z0-9]+)/?$ index.php?$1 [L]
RewriteRule ^([a-z0-9]+)/([a-z0-9]+)/?$ index.php?$1&$2 [L]

   
 
 автор: ozono   (27.12.2006 в 13:04)   письмо автору
 
   для: glsv (Дизайнер)   (26.12.2006 в 05:40)
 

последний этап==========

вод какой конечный вопрос возникает еще:

надо чтоб та ссылка которая не существует открывала страничку test1.ru/error.php (это можно сделать и на пхп но что насчет хтаксес?)


например :

ссылки test1.ru/kk/pp5 не существует и тогда сайт пусть сразу сделает редирект или что-нибудь еше чтоб окрылся сайт test1.ru/error.php

   
 
 автор: glsv (Дизайнер)   (28.12.2006 в 05:44)   письмо автору
 
   для: ozono   (27.12.2006 в 13:04)
 

А вот здесь неразрешимая неоднозначность. В предыдущих постах решалась задача перебрасывать все URL вида test1.ru/kk/pp5 на index.php.
А сейчас Вы говорите, что часть нужно, а часть не нужно перебрасывать. Apache не может так сделать, потому нет условия, согласно которому он сможет принять решение: перебрасывать или нет. Вам нужно либо делать это через PHP, либо вводить в URL дополнительный параметр.

   
 
 автор: ozono   (29.12.2006 в 12:11)   письмо автору
 
   для: glsv (Дизайнер)   (28.12.2006 в 05:44)
 

ок!!! я понял ....... БОЛЬШОЕ ВАМ СПАСИБО!!!!!!!!!!

С НАСТУПАЮЩИМ ВАС ПРАЗДНИКОМ!!!!!!!! желаю чтоб ваш комп не зависал, чтоб мышка не глючила и чтоб ваша муза творчества вас не покидала!!!!)))

Удачи!!!!!!

вопросы будут сразу же напишу Вам)))))

   
 
 автор: iambanderas   (11.07.2007 в 04:33)   письмо автору
 
   для: glsv (Дизайнер)   (24.12.2006 в 11:27)
 

HELP!
Та же проблема с изменениями путей к картинкам и стилям!
У меня ничего не получается. Испробовал и этот метод, и другие пробовал. Весь форум перелопатил, и ничего работающего, кроме Base в тэг Head не нашел!
Нужно решить задачу именно реврайтом.
Помогите пожалуйста.

   
 
 автор: neokortex   (11.07.2007 в 10:21)   письмо автору
 
   для: iambanderas   (11.07.2007 в 04:33)
 

я то же за что что-бы все у кого работают правила мод реврайта выложили свои примеры в этой теме. Ибо куча тем существует, мало кто может помочь, помогите тогда своими правилами хотя-бы, что-бы люди могли сами разобраться что - почем.
У меня то-же ничего не получается.

   
Rambler's Top100
вверх

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