Переписать .htaccess, для всех каталогов - PullRequest
2 голосов
/ 25 октября 2011

Итак, у меня есть ошибки, которые передаются по URL, например

index.php?error=nojs

будет затем проанализирован PHP для возврата сообщения об ошибке, например: Пожалуйста, включите Javascript

Я использую следующую строку в моем .htaccess, чтобы упростить управление URL

RewriteRule ^ERROR_(.*)$ index.php/?error=$1&%{QUERY_STRING} [L]

Это делает мой URL похожим на это: site.com/ERROR_nojs

Проблема в том, что это работает только для рута,

index.php?error=nojs        works fine however
test/index.php?error=nojs   does not?

Так, как я могу преобразовать переменную для каждого каталога?

Спасибо. (Мой оригинальный скрипт обрабатывает сотни ошибок и отфильтровывает те, которые могут быть полезны для вывода пользователю. Было бы глупо перенаправлять их в индекс только для того, чтобы они могли видеть маленькое с сообщением об ошибке в нем)

EDIT:

как указал Шай Мишали, удалив '^' до того, как ОШИБКА сделала свое дело.

RewriteRule ERROR_(.*)$ index.php/?error=$1&%{QUERY_STRING} [L]

Но я забыл сказать, что у меня есть другая переменная? Page =

Мне нужно получить этот vairbale и добавить его в URL, чтобы это работало ..

например:

index.php?page=home&error=nojs
= site.com/home/ERROR_nojs

так

 www.site.com/?page=home&error=nojs   = www.site.com/home/ERROR_nojs

или

 www.site/?page=about&error=unknown  = www.site.com/about/ERROR_unknown

Ответы [ 2 ]

0 голосов
/ 25 октября 2011

Вы можете использовать приведенный ниже код

 RewriteRule ^([a-z0-9A-Z]+)/([a-z0-9A-Z]+)$ ./index.php?page=$1&error=ERROR_$2 [NC]

Ваш URL site.com/home/ERROR_nojs будет обрабатываться как index.php? Page = home & error = nojs, и вы можете получить значения методом GET.Для более информация

0 голосов
/ 25 октября 2011

Я почти уверен, что ваша проблема в том, что ваше правило ищет что-то, что начинается с ОШИБКИ (знак ^).

/ ОШИБКА начинается с ошибки, которая работает в вашем корне, но / tests / ERROR запускается с тестов, поэтому он не распознает его.

Попробуйте удалить знак ^ и посмотрите, что произойдет.

Шай.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...