За последние 24 часа нас посетил 17321 программист и 1234 робота. Сейчас ищет 1381 программист ...

Помогите с htaccess

Тема в разделе "Регулярные выражения", создана пользователем pr0n1x, 27 ноя 2007.

  1. pr0n1x

    pr0n1x Активный пользователь

    С нами с:
    30 мар 2006
    Сообщения:
    486
    Симпатии:
    2
    Адрес:
    Киев
    Файл htaccess

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

    Options +FollowSymLinks
    RewriteEngine on
    RewriteBase /
    RewriteRule ^.htaccess$ - [F]

    RewriteRule ^([0-9a-zA-Z\-]+)\/([0-9a-zA-Z\-]+)\/([0-9a-zA-Z\-]+)\/\?(.*) /wedding_vendors_listing.php?state=$1&category=$2&subcategory=$3&$4 [L]

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

    В это файле регулярное выражение ^([0-9a-zA-Z\-]+)\/([0-9a-zA-Z\-]+)\/([0-9a-zA-Z\-]+)\/\?(.*) парсит вот эту строку:
    http://www.test.com/united-states/brida ... =3#vendors

    проверял с помощью программок для проверки регулярных выражение, результат возвражает такой:
    1: united-states
    2: bridal-gowns-formal-attire
    3: wedding-vendors
    4: sort_num=&zipcode=&miles=&Formvendors_Page=3#vendors

    Все вроде как и хотел, rewrite engine должен сгенерировать такую ссылку

    http://www.test.com/wedding_vendors_lis ... =3#vendors

    грузится эта страничка, переменные state, category и subcategory видны, php скрипт их видит, ну а все что идет после subcategory php скрипт не видет?

    Что это может быть?
     
  2. pr0n1x

    pr0n1x Активный пользователь

    С нами с:
    30 мар 2006
    Сообщения:
    486
    Симпатии:
    2
    Адрес:
    Киев
    Запустил этот скрипт и вывел инфу функцией phpinfo()
    так вот в переменной QUERY_STRING = state=united-states&category=bridal-gowns-formal-attire&subcategory=wedding-vendors

    почему не передаются другие параметры?
     
  3. 440Hz

    440Hz Старожил
    Команда форума Модератор

    С нами с:
    21 дек 2012
    Сообщения:
    8.003
    Симпатии:
    1
    Адрес:
    Оттуда
    допиши в правило [L,QSA,NC] т.к. парметры передаются а не урл. понимать надо что делаешь


    как пример

    Код (Text):
    1.  
    2. RewriteEngine On
    3.  
    4. Options +FollowSymlinks
    5. RewriteBase /
    6.  
    7. RewriteRule ^$          dispatch.php?page= [QSA]
    8.  
    9. RewriteCond %{REQUEST_FILENAME} !-f
    10. RewriteCond %{REQUEST_FILENAME} !-d
    11.  
    12. RewriteRule ^([a-z0-9\/]+)/?$   dispatch.php?page=$1 [L,QSA,NC]

    при вызове /aaa/bbb/ccc/ddd/111/222/333/?a=a&b=b

    переделает в page=/aaa/bbb/ccc/ddd/111/222/333/&a=a&b=b

    мысля понятна?
     
  4. pr0n1x

    pr0n1x Активный пользователь

    С нами с:
    30 мар 2006
    Сообщения:
    486
    Симпатии:
    2
    Адрес:
    Киев
    440Hz

    написал вот так:
    Код (Text):
    1. RewriteRule ^([0-9a-zA-Z\-]+)\/([0-9a-zA-Z\-]+)\/([0-9a-zA-Z\-]+)\/\?(.*) /wedding_vendors_listing.php?state=$1&category=$2&subcategory=$3&$4 [L,QSA,NC]
    Не работает
     
  5. pr0n1x

    pr0n1x Активный пользователь

    С нами с:
    30 мар 2006
    Сообщения:
    486
    Симпатии:
    2
    Адрес:
    Киев
    если я правильно понял, результат должен получиться:

    Код (Text):
    1.  
    2. page = united-states/bridal-gowns-formal-attire/wedding-vendors/&sort_num=&zipcode=&miles=&Formvendors_Page=3#vendors
    а что мне тогда делать с с тремя первыми переменными united-states, bridal-gowns-formal-attire, wedding-vendors ????
     
  6. 440Hz

    440Hz Старожил
    Команда форума Модератор

    С нами с:
    21 дек 2012
    Сообщения:
    8.003
    Симпатии:
    1
    Адрес:
    Оттуда
    RewriteRule ^([0-9a-zA-Z\-]+)\/([0-9a-zA-Z\-]+)\/([0-9a-zA-Z\-]+)\/? wedding_vendors_listing.php?state=$1&category=$2&subcategory=$3 [L,QSA,NC]
     
  7. 440Hz

    440Hz Старожил
    Команда форума Модератор

    С нами с:
    21 дек 2012
    Сообщения:
    8.003
    Симпатии:
    1
    Адрес:
    Оттуда
    http - протокол
    ://
    www.test.com - хост
    /united-states/bridal-gowns-formal-attire/wedding-vendors/ - путь
    ?
    sort_num=&zipcode=&miles=&Formvendors_Page=3#vendors - параметры


    так понятнее?

    rewrite в данном случае работает с ПУТЕМ дописывая параметры
     
  8. pr0n1x

    pr0n1x Активный пользователь

    С нами с:
    30 мар 2006
    Сообщения:
    486
    Симпатии:
    2
    Адрес:
    Киев
    СПАСИБО, ЗАРАБОТАЛО
     
  9. 440Hz

    440Hz Старожил
    Команда форума Модератор

    С нами с:
    21 дек 2012
    Сообщения:
    8.003
    Симпатии:
    1
    Адрес:
    Оттуда
    это не главное. главное что б ты понял КАК оно работает.
    =)