ФорумПрограммированиеPHP для идиотов → Хелп ро рерайтам [ModRewrite, Apache, ololo]

Хелп ро рерайтам [ModRewrite, Apache, ololo]

  • md5

    Сообщения: 11960 Репутация: N Группа: в ухо

    Spritz 10 сентября 2010 г. 16:57

    Магистры регулярок и рерайтов, посмотрите, какое вспе у меня гавно)

    Все запросы сваливаются в корень на index.php и разбираются внутри

    RewriteEngine on

    RewriteBase /



    # это мы пропускаем
    RewriteCond %{REQUEST_URI} ^/(templates|js|wp-content)/.*

    RewriteRule . - [L]


    # это не пашет, а должно ли вобще? Оо
    RewriteCond %{REQUEST_URI} ^/blog/([0-9]+)/$

    RewriteRule ^/blog/([0-9]+)/ /blog/item/$1/


    RewriteRule ^(.*)$ index.php


    хочу, чтобы все запросы типа /blog/123/ превращались в /blog/item/123/ и дальше разибрались в index.php

    Бен, это Данила, ай нид хелп!
    все умрут, а я изумруд
  • Sinkler

    Сообщения: 7958 Репутация: N Группа: в ухо

    Spritz 10 сентября 2010 г. 17:02, спустя 5 минут 23 секунды

    ну, по логике еще один кондишн надо, чтобы /blog/item/123/ к index.php обращался.

    хотя, я нуб в этом, пару раз всего с ними работал
  • vasa_c

    Сообщения: 3131 Репутация: N Группа: в ухо

    Spritz 10 сентября 2010 г. 17:48, спустя 45 минут 41 секунду

    Наверное после рерайта нужно какой-то флаг для завершения разбора. Хотя хз, у меня апача нет, чего и тебе желаю. Требуй у одворда, чтобы нгинкс тебе поставил.
  • md5

    Сообщения: 11960 Репутация: N Группа: в ухо

    Spritz 10 сентября 2010 г. 17:49, спустя 1 минуту 20 секунд

    vasa_c, на том серве, где это нужно - нет нгинкса :(
    все умрут, а я изумруд
  • Абырвалг

    Сообщения: 6480 Репутация: N Группа: Джедаи
  • md5

    Сообщения: 11960 Репутация: N Группа: в ухо

    Spritz 10 сентября 2010 г. 18:21, спустя 31 минуту 37 секунд

    да какие вы блять профи после этого)))

    RewriteEngine on
    RewriteBase /

    RewriteRule ^(cron|templates|js|wp-content)/.* - [L]
    RewriteRule ^blog/([0-9]+)/$ /blog/item/$1/ [L]
    RewriteRule ^(.*)$ index.php

    нихуя оно не пашет :(
    все умрут, а я изумруд
  • Абырвалг

    Сообщения: 6480 Репутация: N Группа: Джедаи

    Spritz 10 сентября 2010 г. 18:29, спустя 8 минут 35 секунд

    сорри, я просто задание не читал, а только сообщение васяца
  • artoodetoo

    Сообщения: 5147 Репутация: N Группа: в ухо

    Spritz 10 сентября 2010 г. 18:31, спустя 1 минуту 50 секунд

    "чтобы превращались" значит чтобы перекиывало старый адрес на новый?
    [R] или [R,L]
    а в последнем правиле просто [L]
    тогда два последних RewriteRule не будут друг-другу протворечить, afaik
    ιιlllιlllι унц-унц
  • Sinkler

    Сообщения: 7958 Репутация: N Группа: в ухо

    Spritz 10 сентября 2010 г. 18:33, спустя 1 минуту 20 секунд


    RewriteEngine on
    RewriteBase /

    # это мы пропускаем
    RewriteCond %{REQUEST_URI} ^/(templates|js|wp-content)/.*
    RewriteRule . - [L]

    # это не пашет, а должно ли вобще? Оо
    RewriteCond %{REQUEST_URI} ^/blog/([0-9]+)/$
    RewriteRule ^/blog/([0-9]+)/ /blog/item/$1/ [N]

    RewriteCond %{REQUEST_URI} ^/blog/item/([0-9]+)/$
    RewriteRule ^(.*)$ index.php
    Спустя 47 сек.
    #

    'next|N' (следуюший раунд)

    Перезапустить процесс преобразований (начав с первого правила). В этом случае URL снова сопоставляется неким условиям, но не оригинальный URL, а URL вышедший из последнего правила преобразования. Это соответствует оператору next в Perl или оператору continue из языка C. Используйте этот флаг для перезапуска процесса преобразований, т.е., безусловному переходу на начало цикла.

    Однако будьте осторожны, для того чтобы не сделать бесконечный цикл!

    как-то так
  • md5

    Сообщения: 11960 Репутация: N Группа: в ухо

    Spritz 10 сентября 2010 г. 18:40, спустя 7 минут 47 секунд


    "чтобы превращались" значит чтобы перекиывало старый адрес на новый?
    [R] или [R,L]
    а в последнем правиле просто [L]
    тогда два последних RewriteRule не будут друг-другу протворечить, afaik
    нет, редирект не нужен
    Спустя 242 сек.
    'next|N' (следуюший раунд)

    это тоже не канает)
    все умрут, а я изумруд
  • phpdude

    Сообщения: 26646 Репутация: N Группа: в ухо

    Spritz 10 сентября 2010 г. 18:43, спустя 2 минуты 41 секунду

    пиздец какой то устроили
    Спустя 22 сек.
    сейчас жена поюзает комп и напишу вам правила, нубы.
    Сапожник без сапог
  • Абырвалг

    Сообщения: 6480 Репутация: N Группа: Джедаи

    Spritz 10 сентября 2010 г. 18:44, спустя 1 минуту 15 секунд

    вы тут прям как магистр-аспирант, который к нам на работу сегодня устраиваться пришел
  • md5

    Сообщения: 11960 Репутация: N Группа: в ухо

    Spritz 10 сентября 2010 г. 18:59, спустя 14 минут 26 секунд

    phpdude, ну ты и хуй! :-D
    Спустя 35 сек.
    хотя, в любом случае получается, что надо роутер править типа
    $requri = isset($_SERVER['REDIRECT_URL']) ? $_SERVER['REDIRECT_URL'] : $_SERVER['REQUEST_URI'];


    с правкой роутера и я могу рерайт написать)
    все умрут, а я изумруд
  • artoodetoo

    Сообщения: 5147 Репутация: N Группа: в ухо

    Spritz 10 сентября 2010 г. 19:00, спустя 1 минуту 18 секунд

    phpdude, в твоем случае будет искаться скрипт по реальному адресу blog/item

    хочу, чтобы все запросы типа /blog/123/ превращались в /blog/item/123/ и дальше разибрались в index.php

    до строчки с index вродебе не дойдет у тебя
    ιιlllιlllι унц-унц
  • phpdude

    Сообщения: 26646 Репутация: N Группа: в ухо

    Spritz 10 сентября 2010 г. 19:01, спустя 1 минуту 10 секунд

    с правкой роутера и я могу рерайт написать)

    никак не сменить REQUEST_URI, если тока у тебя не как сги запускаетс пых в апаче, так что роутер придется править 100% :)
    Спустя 48 сек.
    до строчки с index вродебе не дойдет у тебя

    попробуй, полюбишь. апач меня ненавидит за то, что я с его модреврайтом делаю. предложеный метод работает 100%, проверь ;)
    Сапожник без сапог

Пожалуйста, авторизуйтесь, чтобы написать комментарий!