Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Поговорим о RewriteCond, RewriteRule, ЧПУ, хотелось бы по подробней узнать 
:(
    Опции темы
numerovan
Дата 2.4.2015, 20:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 549
Регистрация: 1.12.2007

Репутация: нет
Всего: 2



Поясните пожалуйста работу RewriteCond, RewriteRule.

В инете, сколько перерыл, все сводится именно сюда: 
http://www.egoroff.spb.ru/portfolio/mod_rewrite.html
http://www.egoroff.spb.ru/portfolio/rewriteguide.html

RewriteCond - это значит что у нас условия, если они верны, то выполняется RewriteRule

Есть картинка, с тех же ссылок
http://www.egoroff.spb.ru/apache/images/mod_rewrite_fig1.gif

Приведу сразу пример (наиболее популярный) и ход своих мыслей:
Код

RewriteCond %{HTTP_HOST} ^www.(.*) [NC]
RewriteRule ^/?(.*) http://%1/$1 [L,R=permanent]

Если HTTP_HOST (далее test.ru) встречается один раз или более, но меньше 10 раз в строчке с патерном www.(.*) (регистронезивисемым [NC]), то примени правило RewriteRule, а именно ^/?(.*) прямой слеш 0 или 1 раз и далее любой символ ... если совподение произошло, то вырубай проверку далее  (L) и делай редирект ® с опцией (permanent, т.е. документ перемещен постоянно, можно и цифру в место слова поставить 301, что равно этому перманенту). Если все нормально, то в %1 поставь test.ru, а в $1 поставь любой символ из ноль или более раз.

Вот еще пример и правильно ли я мыслю:
Код

RewriteCond (что-то)
RewriteCond (что-то)
RewriteCond (что-то)
RewriteRule (что-то)

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

if(условие && условие && условие)
     (что-то выполнить)


Вот еще пример и правильно ли я понимаю:
Код

RewriteCond (что-то №1)
RewriteRule (что-то №2)
RewriteRule (что-то №3)

Примени правило RewriteCond №1 только для RewriteRule №2, а RewriteRule №3 выполни в любом случае.

----------------------------------------------------------------------------------------------------------------------------
Теперь задача:
Если в URL бывает таким: http://test.ru/1/2/3/.../n. Как лучше прописать правила и обрабатывать их скриптом? Н а данный момент я пока сделал следующее:
Код

RewriteRule ^([a-z-]+)$                                                                /ads.php?v[]=$1                                    [QSA]
RewriteRule ^([a-z-]+)/([a-z-]+)$                                                        /ads.php?v[]=$1&v[]=$2                                [QSA]
RewriteRule ^([a-z-]+)/([a-z-]+)/([a-z-]+)$                                            /ads.php?v[]=$1&v[]=$2&v[]=$3                        [QSA]
RewriteRule ^([a-z-]+)/([a-z-]+)/([a-z-]+)/([a-z-]+)$                                    /ads.php?v[]=$1&v[]=$2&v[]=$3&v[]=$4                [QSA]
RewriteRule ^([a-z-]+)/([a-z-]+)/([a-z-]+)/([a-z-]+)/([a-z-]+)$                        /ads.php?v[]=$1&v[]=$2&v[]=$3&v[]=$4&v[]=$5        [QSA]
RewriteRule ^([a-z-]+)/([a-z-]+)/([a-z-]+)/([a-z-]+)/([a-z-]+)/([a-z-]+)$                /ads.php?v[]=$1&v[]=$2&v[]=$3&v[]=$4&v[]=$5&v[]=$6    [QSA]

но чувствую что это не правильно, где-то видил вариант следующий - посылать только в одну переменую, н-р вот так:
Код

RewriteRule ^catalog/(.*)$ /page.php?v=$1 [QSA] // слово catalog - как некий идентификатор

и чтоб один скрипт обрабатывал дальнейшую работу, на сколько понимаю что переменная "v" должна принимать массив со всеми необходимыми параметрами.
PM MAIL   Вверх
numerovan
Дата 6.4.2015, 16:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 549
Регистрация: 1.12.2007

Репутация: нет
Всего: 2



чет ни какого прогресса нет )
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Администрирование Web серверов и Web служб | Следующая тема »


 




[ Время генерации скрипта: 0.0638 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.