ФорумПрограммированиеPHP для идиотов → Помогите с настройкой .htaccess

Помогите с настройкой .htaccess

  • TRIAL

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

    Spritz 13 апреля 2011 г. 0:19, спустя 13 часов 53 минуты 11 секунд

    Givi, да можно наверное, просто думал так будет удобнее и проще.
    Кстати подскажите, как лучше и правильнее разбирать большие ссылки, например my_site.com/category/sub_cat/1/2/3/… и т.д. На подобие бесконечного вложения. У меня фантазии хватило только на это:
    RewriteRule ^([a-z0-9\_\-]+)/([a-z0-9\_\-]+)/([a-z0-9\_\-]+)/$ index.php?dir=$1&sub=$2&ext_sub=$3 [QSA]

    Но это даже в моих глазах выглядит ужасно :)

    Кажется всё это решается банальным ^(.*)$ index.php?arg=$1
    from TRIAL with LOVE
  • technobulka

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

    Spritz 13 апреля 2011 г. 0:49, спустя 29 минут 22 секунды

    RewriteRule ^([a-z0-9\_\-]+)/([a-z0-9\_\-]+)/([a-z0-9\_\-]+)/$ index.php?dir=$1&sub=$2&ext_sub=$3 [QSA]

    зачем столько лишней экнанизации?

    по-хорошему лучше так сделать:
    ^([\w-]+)/([\w-]+)/([\w-]+)/$
    Высокоуровневое абстрактное говно
  • TRIAL

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

    Spritz 13 апреля 2011 г. 1:46, спустя 56 минут 45 секунд

    Мне регулярки всегда с трудом давались :) Сколько раз пытался в них разобраться и до конца никогда не удавалось :)
    from TRIAL with LOVE
  • technobulka

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

    Spritz 13 апреля 2011 г. 3:37, спустя 1 час 51 минуту 12 секунд

    http://gskinner.com/RegExr/ - удобная плюшка
    Высокоуровневое абстрактное говно
  • TRIAL

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

    Spritz 14 апреля 2011 г. 4:42, спустя 1 день 1 час 5 минут

    Подскажите еще плиз.
    Щас стоит полное перенаправление
    RewriteRule ^(.*)$ index.php?param=$1 [QSA]
    Под это правило попал и CSS и прочие скрипты. Как мне указать что при обращении к папке css и script он должен лезть именно в них а не на индекс. Это можно исключение прописать что-то типа [^css/|script/] или как-то иначе?

    Так, проще было попробовать сперва чем спрашивать ))) Сработало кажись.
    Это вобще правильное решение или лучше как-то иначе сделать?
    from TRIAL with LOVE
  • truth4oll

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

    Spritz 14 апреля 2011 г. 5:57, спустя 1 час 14 минут 48 секунд

    можно положить в папки css, scripts файл htaccess, в котором прописать RewriteEngine off
  • fgets

    Сообщения: 1099 Репутация: N Группа: Кто попало

    Spritz 14 апреля 2011 г. 6:23, спустя 25 минут 43 секунды


    Подскажите еще плиз.
    Щас стоит полное перенаправление
    RewriteRule ^(.*)$ index.php?param=$1 [QSA]
    Под это правило попал и CSS и прочие скрипты. Как мне указать что при обращении к папке css и script он должен лезть именно в них а не на индекс. Это можно исключение прописать что-то типа [^css/|script/] или как-то иначе?

    Так, проще было попробовать сперва чем спрашивать ))) Сработало кажись.
    Это вобще правильное решение или лучше как-то иначе сделать?


    RewriteCond $1 !^(index\.php|images|css|js|robots\.txt|favicon\.ico)
  • TRIAL

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

    Spritz 14 апреля 2011 г. 6:29, спустя 5 минут 55 секунд

    fgets, спс, помогло :) Ждем очередных глюков )
    from TRIAL with LOVE
  • TRIAL

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

    Spritz 25 апреля 2011 г. 6:10, спустя 10 дней 23 часа 41 минуту

    Подскажите еще плиз :)
    В формах везде пишу <form action='action.php'>
    Как в htaccess прописать что где-бы в ссылке не встречалась action.php всегда бы шло перенаправление на action.php в корневой папке, где и index.php валяется.
    Щас в htaccess прописано следующее
    RewriteEngine On
    RewriteCond $1 !^(index\.php|action\.php|admin|img|css|js|robots\.txt|favicon\.ico)
    RewriteCond $1 !(action\.php)
    RewriteRule ^(.*)$ index.php?param=$1 [QSA]

    action то он пропускает, но ищет файл в текущем виртуальном каталоге, например так: mysite.ru/my/virtual/directory/action.php и ясное дело не находит ничего.
    через RewriteRule /action.php$ action.php [QSA] пробовал но не получается ничего
    from TRIAL with LOVE
  • Givi

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

    Spritz 25 апреля 2011 г. 6:17, спустя 7 минут 3 секунды

    TRIAL, а нахуя? Вінести отдельній обработчик для ВСЕХ форм, встречающихся в проекте - єто гониво, ибо получается жесткая привязка модулей между собою и системой. Нужно делать обработчик в каждом модуле отдельно, то есть своя форма - свой обработчик.
  • TRIAL

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

    Spritz 25 апреля 2011 г. 6:57, спустя 39 минут 44 секунды

    Я просто привык именно так делать. Конечно привязка есть, но мне это никак не вредит. В любом случае хотелось бы узнать как это сделать.
    from TRIAL with LOVE
  • Givi

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

    Spritz 25 апреля 2011 г. 8:20, спустя 1 час 23 минуты 9 секунд

    Вместо <form action='action.php'> ставь <form action='/action.php'> и будет тебе счастье.
  • TRIAL

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

    Spritz 2 июня 2011 г. 5:42, спустя 37 дней 21 час 21 минуту

    Снова вернулся к этой теме.
    Немножко накосячил с правилами, а как исправить непойму.
    В .htaccess сейчай вот это
    RewriteEngine On
    RewriteCond $1 !^(index\.php|action\.php|admin|img|css|js|robots\.txt|favicon\.ico)
    RewriteRule ^(.*)$ index.php?param=$1 [QSA]
    RewriteRule action.php$ action.php [QSA]

    Всё замечательно работает. В скриптах везде пишу ./action.php.
    Но вот только что столкнулся с такой проблемой, в админке, а именно в папке my_site.ru/admin/ тоже есть файл action.php и когда я пытаюсь что-либо сделать через админку, ничего у меня не выходит. Как мне указать чтоб эти правила не действовали если я нахожусь в папке admin?
    from TRIAL with LOVE
  • TRIAL

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

    Spritz 2 июня 2011 г. 22:59, спустя 17 часов 16 минут 59 секунд

    Ну раз никто не знает как такое сделать, придется наверное банально переименовать в админке action.php например на act.php и сменить все пути.
    from TRIAL with LOVE
  • truth4oll

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

    Spritz 2 июня 2011 г. 23:06, спустя 6 минут 48 секунд

    RewriteEngine off в папке admin?
    а, сорри, писал уж такое)

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