Javascript-форум (https://javascript.ru/forum/)
-   Серверные языки и технологии (https://javascript.ru/forum/server/)
-   -   .htaccess и регулярные выражения или скрипт? (https://javascript.ru/forum/server/61612-htaccess-i-regulyarnye-vyrazheniya-ili-skript.html)

2chan 26.02.2016 03:16

.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?
Если да - подскажите: как? Про условния знаю, но не могу придумать как их использовать.
Если нет - стоит ли для этого делать скрипт, обрабатывающий такой УРЛ, или есть другие методы?

laimas 26.02.2016 09:47

Цитата:

Сообщение от 2chan
Делаю ЧПУ для админки.

Пользователь или коллективный доступ к ней?

2chan 26.02.2016 13:41

Цитата:

Сообщение от laimas (Сообщение 409340)
Пользователь или коллективный доступ к ней?

>коллективный доступ
Если имеешь в виду, что будет много разных юзеров - да. Права у них отличаются, некоторые не могут иметь доступ к тем или иным разделам.

laimas 26.02.2016 14:23

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

Может быть, если уж делать, то администрирование/раздел/ключ в разделе/параметры, где ключ, это уже задача в разделе, а параметры просто параметры (их можно и в JSON передавать), а не размазывать для каждого да еще буковка+идентификатор - b137, r137, r137/crear, p137, p137/delete...?


Часовой пояс GMT +3, время: 19:48.