2014-02-26 4 views
3

это мой первый вопрос на этом сайте. Извините за любые ошибки и т. Д. Я попытался найти подобную тему, но я ничего не нашел..htaccess - универсальное правило

Пример: файл .htaccess (только малая часть):

# Rules for admin meniu 
RewriteRule ^adm/([a-z]+)/([0-9]+)?/?([a-zA-Z0-9]+)?/?$ index.php?page=adm&page_id=$1&id=$2&act=$3 [NC,L] 

Это одно правило подходит несколько подкатегорий панели администратора. Как видим, у меня есть 1 статическая и 2 необязательные переменные. Статический для коммутатора ($ _ GET [page_id]) на моем admin.php. Вторая переменная (необязательная) для некоторого id (Новости, Пользователи, Проекты или что-то еще). Третья переменная (также необязательная) предназначена для действий (удаление, редактирование, запрет и т. Д.). Так что, если я хочу, чтобы проверить информацию пользователя я использую эту ссылку:

index.php?page=adm&page_id=[users_page]&id=[users_id] 

и мне не нужны действия. Но если я хочу, чтобы проверить некоторые новости:

index.php?page=adm&page_id=[news_page]&id=[users_id]&act=[edit] 

Но иногда мне просто нужно, чтобы добраться до подкатегории:

index.php?page=adm&page_id=[news_page] 

И наконец ...

Вопрос: ли это хорошая идея чтобы сделать это правило перезаписи универсальным для нескольких категорий панели администратора, или я должен сделать это отдельно для каждого из них. Или есть некоторые другие решения? Помните, что некоторые части этой ссылки не используются. Иногда мне не нужен & act = ... или иногда мне просто нужно только & page_id = ... И таких ситуаций очень много. Надеюсь, вы поймете это.

ответ

1

Почему бы не держать его в чистоте и простой и иметь 3 отдельные правила для обработки различных случаев:

RewriteEngine On 

RewriteRule ^adm/([a-z]+)/([0-9]+)/([a-z0-9]+)/?$ index.php?page=adm&page_id=$1&id=$2&act=$3 [NC,L,QSA] 

RewriteRule ^adm/([a-z]+)/([0-9]+)/?$ index.php?page=adm&page_id=$1&id=$2 [NC,L,QSA] 

RewriteRule ^adm/([a-z]+)/?$ index.php?page=adm&page_id=$1 [NC,L,QSA] 
+0

Ну .. Это мой вопрос немного глупым, но я хотел быть уверен, что и делать вещи в правильно. Да, этот метод чист и прост. Просто хотел узнать, что другие думают об этом. Я достаточно стартер с .htaccess и mod_rewrite, поэтому просто хотел послушать более продвинутых людей, о чем они думают. Спасибо за Ваш ответ! :) – Gedmi

+0

После ответа на тысячи вопросов по этому переписываемому вопросу вы серьезно полагаете, что я предложу что-то, что не является лучшей практикой? Я могу легко объединить 3 правила в один, но это не будет легко читаемым и поддерживаемым правилом для будущих улучшений. – anubhava

+0

Нет, нет, не поймите меня неправильно. Я не сомневаюсь в ваших навыках. Я ценю Ваш ответ! Просто объяснил, почему я спросил об этом. :) Еще раз спасибо! ;) – Gedmi

Смежные вопросы