ANTICHAT.XYZ    VIDEO.ANTICHAT.XYZ    НОВЫЕ СООБЩЕНИЯ    ФОРУМ  
Баннер 1   Баннер 2
Antichat снова доступен.
Форум Antichat (Античат) возвращается и снова открыт для пользователей. Здесь обсуждаются безопасность, программирование, технологии и многое другое. Сообщество снова собирается вместе.
Новый адрес: forum.antichat.xyz
Вернуться   Форум АНТИЧАТ > Программирование > PHP, PERL, MySQL, JavaScript
   
Ответ
 
Опции темы Поиск в этой теме Опции просмотра

Вопрос по mod_rewrite
  #1  
Старый 17.05.2007, 16:22
Аватар для Naydav
Naydav
Постоянный
Регистрация: 30.12.2006
Сообщений: 434
Провел на форуме:
849583

Репутация: 210
По умолчанию Вопрос по mod_rewrite

Всем привет, прошу помочь...


На сайте ссылки вида

Подарочная косметика
Для женщин Для мужчин

Если выбрано "Подарочная косметика " то урл имеет вид -
"http://podarkov.net.ua/present_cosmetic.html"

Если выбрано "Для женщин " то урл имеет вид -
"http://podarkov.net.ua/present_cosmetic/dlya_zenchin.html"


Второе решаеться правилом -

RewriteRule ^(.*)/(.*).html$ view.php?cat=$1&podcat=$2


Но как быть с первым,
если запишем
RewriteRule ^/(.*).html$ view.php?cat=$1
то это правило перекроет приведенное выше

и если нажать ссылку вида "Для женщин"
то в $_GET[cat] = "present_cosmetic/dlya_zenchin",
а не "dlya_zenchin"!


как следует поступить?

вариант может такой -

проверяем урл если он вида
http://site/present_cosmetic/dlya_zenchin.html
запускаем правило
RewriteRule ^(.*)/(.*).html$ view.php?cat=$1&podcat=$2


а если урл вида
http://site/present_cosmetic.html
то запускаем
RewriteRule ^/(.).html$ view.php?cat=$1


НО КАК ТАКУЮ ПРОВЕРКУ РЕАЛИЗОВАТЬ В .htaccess ?????

Последний раз редактировалось Naydav; 17.05.2007 в 16:27..
 
Ответить с цитированием

  #2  
Старый 17.05.2007, 18:58
Аватар для hidden
hidden
Постоянный
Регистрация: 23.04.2006
Сообщений: 622
Провел на форуме:
5887054

Репутация: 1292


По умолчанию

Ты ведь сам ответил на свой вопрос, что надо реализовать 2 правила
Код:
RewriteRule ^([^/]+)/([^/]+)\.html$ view.php?cat=$1&podcat=$2
RewriteRule ^([^/]+)\.html$ view.php?cat=$1
 
Ответить с цитированием

  #3  
Старый 17.05.2007, 19:11
Аватар для Raz0r
Raz0r
Участник форума
Регистрация: 07.01.2007
Сообщений: 259
Провел на форуме:
309455

Репутация: 41
По умолчанию

Второе не перекроет первое... т..к запросы разные, в первом случае это "view.php?cat=$1&podcat=$2", а во втором "view.php?cat=$1", мод реврайт действует точно по rewriterule
 
Ответить с цитированием

  #4  
Старый 17.05.2007, 19:23
Аватар для Helios
Helios
Постоянный
Регистрация: 14.01.2007
Сообщений: 459
Провел на форуме:
1469995

Репутация: 589
Отправить сообщение для Helios с помощью ICQ
По умолчанию

Для того, чтобы сделать правило более приоритетным, размещай его выше, чем менее приоритетное, и ставь в конце
Код:
[L]
.

Последний раз редактировалось Helios; 17.05.2007 в 19:33..
 
Ответить с цитированием

  #5  
Старый 17.05.2007, 19:34
Аватар для hidden
hidden
Постоянный
Регистрация: 23.04.2006
Сообщений: 622
Провел на форуме:
5887054

Репутация: 1292


По умолчанию

Цитата:
Сообщение от Raz0r  
Второе не перекроет первое... т..к запросы разные, в первом случае это "view.php?cat=$1&podcat=$2", а во втором "view.php?cat=$1", мод реврайт действует точно по rewriterule
А ты попробуй
 
Ответить с цитированием

  #6  
Старый 18.05.2007, 11:42
Аватар для Raz0r
Raz0r
Участник форума
Регистрация: 07.01.2007
Сообщений: 259
Провел на форуме:
309455

Репутация: 41
По умолчанию

Мде я былЪ неправ
 
Ответить с цитированием

  #7  
Старый 18.05.2007, 12:39
Аватар для Naydav
Naydav
Постоянный
Регистрация: 30.12.2006
Сообщений: 434
Провел на форуме:
849583

Репутация: 210
По умолчанию

Цитата:
Ты ведь сам ответил на свой вопрос, что надо реализовать 2 правила
Содержание .htaccess:
RewriteRule ^(.*).html$ view.php?cat=$1
RewriteRule ^(.*)/(.*).html$ view.php?cat=$1&podcat=$2


При ссылке http://site/present_cosmetic.html
$_GET[cat] = present_cosmetic

При ссылке http://site/present_cosmetic/dlya_zenchin.html
$_GET[cat] = present_cosmetic/dlya_zenchin



т.е первое правило как бы говорит все, что после индекса в переменную $1( оно прекрівает первое )
но это нужно только когда ссылка вида http://site/present_cosmetic.html


А при ссылке вида http://site/present_cosmetic/dlya_zenchin.html
в эту переменную $1($_GET[cat] ), записивает present_cosmetic/dlya_zenchin

Все начинает работать если первое правило отключить...



Цитата:
вариант может такой -

проверяем урл если он вида
http://site/present_cosmetic/dlya_zenchin.html
запускаем правило
RewriteRule ^(.*)/(.*).html$ view.php?cat=$1&podcat=$2


а если урл вида
http://site/present_cosmetic.html
то запускаем
RewriteRule ^/(.).html$ view.php?cat=$1


НО КАК ТАКУЮ ПРОВЕРКУ РЕАЛИЗОВАТЬ В .htaccess ?????

Последний раз редактировалось Naydav; 18.05.2007 в 12:41..
 
Ответить с цитированием

  #8  
Старый 18.05.2007, 14:12
Аватар для Raz0r
Raz0r
Участник форума
Регистрация: 07.01.2007
Сообщений: 259
Провел на форуме:
309455

Репутация: 41
По умолчанию

Да, насколько я помню, поднимали уже тему про мод-реврайт... пользуйся поиском, может чего полезного найдешь
 
Ответить с цитированием

  #9  
Старый 18.05.2007, 20:26
Аватар для hidden
hidden
Постоянный
Регистрация: 23.04.2006
Сообщений: 622
Провел на форуме:
5887054

Репутация: 1292


По умолчанию

Если что, мой вариант чуть-чуть отличается от твоего так что будет все как надо...
 
Ответить с цитированием
Ответ



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Вопрос по InetCrack !! :) Nice PHP, PERL, MySQL, JavaScript 12 23.07.2008 17:51
Proxy FAQ foreva Чужие Статьи 12 04.01.2008 12:15
ЕсТь ВоПрос Guma Чаты 4 26.10.2005 21:48
ВОПРОС ЗНАТОКАМ Hrust Болталка 12 23.01.2005 19:31
Вопрос... Black_Death Болталка 1 05.01.2005 04:56



Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 


Быстрый переход




ANTICHAT.XYZ