ФорумПрограммированиеPHP для идиотов → ModRewrite помогите срочно, горит

ModRewrite помогите срочно, горит

  • ivanscm

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

    Spritz 21 февраля 2012 г. 2:16

    есть на одном проекте правило для страниц пользователей

    RewriteRule ^([a-zA-Z0-9-_]+)$ _pages/profile.php?name=$1


    но вылезла бага. есть имена юзеров содержащие точку. но если добавить ее в правило, все странички прямые *.php например, идут лесом
    как сделать игнор на содержание окончания расширений некоторых?
    С возвращением, Пiха!
  • technobulka

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

    Spritz 21 февраля 2012 г. 2:31, спустя 15 минут 26 секунд

    попробуй так:
    ^([a-zA-Z0-9_-]+\.(?!php|cgi|html)[a-zA-Z0-9_-]+)$

    только хз, везде ли прокатывает (?! … )
    Высокоуровневое абстрактное говно
  • ivanscm

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

    Spritz 21 февраля 2012 г. 2:36, спустя 4 минуты 37 секунд

    Stasovsky, спасибо робит. пока пох, в тодо добавил, надо будет разобраться :)
    С возвращением, Пiха!
  • Ivan

    Сообщения: ? Репутация: N Группа: Адекваты

    Spritz 21 февраля 2012 г. 2:37, спустя 1 минуту 4 секунды

    [^ph]
  • technobulka

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

    Spritz 21 февраля 2012 г. 3:14, спустя 37 минут 7 секунд

    RewriteRule ^([a-zA-Z0-9-_]+)$  _pages/profile.php?name=$1

    кстать, в квадратных скобка тире лучше ставить последним
    [a-zA-Z0-9_-]
    , так как оно подразумевает от и до, могут возникнуть косяки
    кроме того,
    [a-zA-Z0-9_-] == [\w-]
    Высокоуровневое абстрактное говно
  • TRIAL

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

    Spritz 24 февраля 2012 г. 2:35, спустя 2 дня 23 часа 20 минут

    Дабы темы не плодить задам вопрос тут :)
    Есть .htaccess
    RewriteEngine On
    RewriteRule ^form\.php$ action.php
    RewriteRule ^(.*)$ index.php?dir=$1 [QSA]

    Нужно в последнее правило воткнуть исключение, чтоб при обращении например к папке css, img и т.д. редирект не происходил, и так же с некоторыми файлами в корне, как например action.php. Чет сижу гуглю и никак не соображу как это сделать.
    from TRIAL with LOVE
  • ivanscm

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

    Spritz 24 февраля 2012 г. 2:39, спустя 4 минуты 14 секунд

    TRIAL,

    RewriteEngine On
    RewriteCond %{REQUEST_FILENAME} -s [OR]
    RewriteCond %{REQUEST_FILENAME} -l [OR]
    RewriteCond %{REQUEST_FILENAME} -d
    RewriteRule ^.*$ - [NC,L]
    RewriteRule ^.*$ index.php [NC,L]


    стандартное решение, взято с зендфреймворка {+++42+++} думаю перед

    RewriteRule ^.*$ - [NC,L]
    RewriteRule ^.*$ index.php [NC,L]


    можно вставить твое правило
    С возвращением, Пiха!
  • TRIAL

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

    Spritz 24 февраля 2012 г. 2:52, спустя 12 минут 48 секунд

    Не хочет с моим правилом работать ни в какую
    from TRIAL with LOVE
  • ivanscm

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

    Spritz 24 февраля 2012 г. 2:53, спустя 1 минуту 42 секунды

    ща гляну погоди, если на работе репозиторий выкачан
    С возвращением, Пiха!
  • TRIAL

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

    Spritz 24 февраля 2012 г. 3:03, спустя 10 минут 3 секунды

    RewriteEngine On
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^(.*)$ index.php?dir=$1 [QSA]

    Сделал пока так, всё вроде работает, но если есть возможность, погляди пожалуйста. Что-то не уверен я что всё будет как надо работать )
    from TRIAL with LOVE
  • ivanscm

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

    Spritz 24 февраля 2012 г. 3:13, спустя 9 минут 11 секунд

    дома лежит, тебе проще нагуглить.
    С возвращением, Пiха!
  • Tekuto

    Сообщения: ? Репутация: N Группа: Адекваты

    Spritz 24 февраля 2012 г. 3:48, спустя 35 минут 4 секунды

    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d


    вроде это надо добавить перед правилом
    если файл или папка существует, то редирект не осуществляется. {+++99+++}
    RewriteEngine On
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule ^(.*)$ index.php?dir=$1 [QSA]
    {+++80+++} и вообще можно маску в правиле заменить на точку(все символы)
  • TRIAL

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

    Spritz 28 февраля 2012 г. 2:45, спустя 3 дня 22 часа 57 минут

    Щас столкнулся еще с одной проблемой, если у меня в ссылке есть ?id=xxx или & например то эти параментры не передаются так как получается ссылка вида index.php?dir=a/b/c/?id=xxx
    Как с этим поступать? Вроде где-то видел как замену символов ставить но щас не могу найти
    from TRIAL with LOVE
  • technobulka

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

    Spritz 28 февраля 2012 г. 2:47, спустя 2 минуты 40 секунд

    url encode
    Высокоуровневое абстрактное говно
  • TRIAL

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

    Spritz 28 февраля 2012 г. 2:57, спустя 9 минут 48 секунд

    А он тут причем, я ж его в .htaccess не запихну
    from TRIAL with LOVE

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