Перенаправление на индекс

Статус
В этой теме нельзя размещать новые ответы.

Smit_

Создатель
Регистрация
1 Мар 2010
Сообщения
19
Реакции
0
Доброго времени суток! У меня есть несколько вариантов обработки в зависимости от введенной адресной строчки, т.е. для индексной страницы своя обработка, для articles.php своя обработка, для pages.php
Итак, я хочу сделать что-то вроде этого:
Все запросы на сайт отправляются на индекс.пхп, дальше, там имеется оператор switch-case для request_uri и в зависимости от введенной строчки (Кстати, в строчке присутствуют get-параметры) выполняется определенный кусочек кода (Таким образом, вместо index.php, articles.php, pages.php я буду пользоваться только более сложным index.php).
Я знаю, что лучше, конечно, все отдельно держать, просто мне это очень нужно.
Вопросы:
1. Вообще так можно сделать?
2. Могу ли я все еще пользоваться get-параметрами из адресной строчки?
3. И конечно же, как написать регулярное выражение, которое будет разрешать только:
1. Буквы
2. Числа
3. Символы & = ?
 
Код:
[A-Za-z?=&]$
- Нужное регулярное выражение.
Только зачем? Если вы сделаете всю свою CMS через один единственный index.php, то вам в .htaccess надо будет убить только запросы не к index.php и т.п.
 
Я видимо неправильно объяснил, нужно чтобы когда я вводил мойсайт.ru/articles.php?id=56 выполнялся кусок кода из case для articles.php в файле index.php. Т.е. все запросы обрабатывались одним php-файлом, как будто множеством php-файлов.
 
Ну тогда как-то так:
Код:
RewriteEngine On
RewriteRule ^(\w+).php?$ index.php?mode=$1 [L,QSA]
В index.php поставить switch, который будет обрабатывать $_GET["mode"], если страница не будет найдена то - редиректить на 404. А GET-параметры запроса через article.php и т.п. будут сохранятся.
 
А как запретить ввод других символов в УРЛ, типа:
[]'"% и т.д., т.е. чтобы вводились только ? = & цифры и буквы
А что значит [L,QSA] в данном случае?
 
Ну тогда нужно перед RewriteRule добавить:
Код:
RewriteCond %{REQUEST_URI} [A-Za-z=&?.]$
QSA - флаг сохранения Query String, тоесть строки запроса.
L - последнее правило.
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху