Показать сообщение отдельно
  #1 (permalink)  
Старый 26.02.2016, 03:16
Аспирант
Отправить личное сообщение для 2chan Посмотреть профиль Найти все сообщения от 2chan
 
Регистрация: 11.07.2014
Сообщений: 69

.htaccess и регулярные выражения или скрипт?
Прошу скромного ответа на вопрос.
Как лучше поступить: сделать регулярное выражение через htaccess или просто предоставить всю обработку запроса отдельному PHP файлу?

Огромное описание задачи - ниже. Заранее прошу прощения за излишек символов - хотел описать объём работы и примеры гибкости всей задачи.
Делаю ЧПУ для админки.
Обработчик один, проверяет много условий, аспектов тоже много.

Всё должно начинаться с "manage" или "manage/".
Т.е. изначально УРЛ таков: "site.ru/somedir/manage/".

В админке куча разделов. УРЛы специально написаны максимально логично и просто - сам любитель "вбивать от руки".

1) Просто разделы
Это просто страница с какой-то информацией, у неё нет дополнительных подразделов.
"manage/postform" - специальная форма постинга;
"manage/logout", "manage/login" - выход/вход;
и пр.

2) Управление блокировками пользователей
"manage/bans" - раздел: добавление/удаление банов, переход к конкретному по ID для конкретной информации
"manage/bans/b137" - получить информацию по бану с ID 137.
"manage/bans/b137/lift" - отпустить бан с ID 137

3) Жалобы
"manage/reports" - все жалобы;
"manage/reports/r137" - жалоба с ID 50;
"manage/reports/rip127.0.0.1" - все жалобы с этим IP;
"manage/reports/r137/crear" - пометить жалобу с ID 50 "чистой";
"manage/reports/rip127.0.0.1/crear" - пометить все жалобы, где IP отправителя - 127.0.0.1, "чистыми";
и т.д, лень всё описывать.

4) Модерация постов
Вот если раньше я ещё думал, что можно всё делать RegExp'ом, то после обдумывания структуры запросов к разделу модерации, я серьёзно засомневался.
"manage/mod/p137" - перейти к модерации поста с ID 137;
"manage/mod/p137/delete" - вместо "delete" может быть "edit", "magic" и пр. - удалить, редактировать, добавить "магии";

5) Ещё думаю как бы добавить поиск всех постов по IP и их опциональное удаление при бане и пр. прелести;

Итак. Некоторую часть вышеописанного я смог уместить в одну регулярку:
> RewriteRule ^manage/([a-z]+)?/?([prb])?([0-9]+)?/?([a-z]+)?$ manage.php?$1=1&$2id=$3&action=$4 [L]
. Работают 1й, 2й и, частично, 3й пункты.
Но что-то мне подсказывает, что расширять её дальше - некуда. Она итак максимально растянута, вместил в её всё что можно, все возможные компоненты являются опциональными и пр.

Возможно ли всё вышеописанное реализовать через простой mod_rewrite?
Если да - подскажите: как? Про условния знаю, но не могу придумать как их использовать.
Если нет - стоит ли для этого делать скрипт, обрабатывающий такой УРЛ, или есть другие методы?
Ответить с цитированием