Вопрос № 35772: Здравствуйте, уважаемые эксперты.
Пишу в .htaccess следующее.
-------------
RewriteEngine On
# ниже правило для урлов содержащих расширение .php
# (редирект на index.php), то есть надо, чтобы родное
# расширение не проходило....
Вопрос № 35.772
Здравствуйте, уважаемые эксперты.
Пишу в .htaccess следующее.
-------------
RewriteEngine On
# ниже правило для урлов содержащих расширение .php
# (редирект на index.php), то есть надо, чтобы родное
# расширение не проходило.
RewriteRule ^(.+).php)$ /index.php [R,L]
# а тут меняем псевдорасширение на .php...
# скрываем технологию короче
RewriteRule ^(.+).exe$ $1.php
-------------
В общем циклит все это дело. Без первого правила все нормально работает. Или я просто не понимаю, в каком порядке и до какой степени идет замена (без флагов):
1) замена идет по всем правилам, пока не будет совпадений. Тогда понятно от чего циклит.
2) замена идет сверху вниз по порядку...
3) Ваш вариант :) ...
Отправлен: 20.02.2006, 03:14
Вопрос задал: $ham (статус: Посетитель)
Всего ответов: 2 Мини-форум вопроса >>> (сообщений: 5)
Отвечает: RedDevil
Здравствуйте, $ham!
Это гораздо проще сделать через настройку апача. В конфиге можно указать, какой файл, каким интерпритатором запускать. Можешь хоть pl делать, хоть свое какое-нибудь расширение - rdp, и все будет работать и не надо извращаться.
Ответ отправил: RedDevil (статус: 6-ой класс)
Отправлен: 20.02.2006, 08:05 Оценка за ответ: 5 Комментарий оценки: Это понятно, что AddHandler проще, но допустим не всякий халявный хостинг это позволяет, а mod_rewrite хоть и геморно, но полезная штука!
Отвечает: Straight
Здравствуйте, $ham!
Поставьте самым первым такое правило:
RewriteRule ^index.php - [L]
Тогда и циклить не будет
Ответ отправил: Straight (статус: 8-ой класс)
Отправлен: 20.02.2006, 09:49 Оценка за ответ: 5 Комментарий оценки: Спасибо за совет, но не то. Надо, чтобы ссылки с расширением php не проходили, т.е. если вручную расширение в браузере на .php поменять, чтобы такой вариант не проходил. Как я прочел здесь http://www.listsoft.ru/article/338/ «Правил может быть несколько, при этом все они применяются в порядке их описания. Когда правила заканчиваются, они вновь начинают применяться
с самого начала, и этот цикл продолжается до тех пор, пока "срабатывает" хотя бы одно из правил.». При этом мне не понятно действие флага [L] «останавливает процесс преобразования, и текущая ссылка считается окончательной». Такое ощущение, что это действует только для текущего правила (внутри него) и потом все равно «гуляет» по всем правилам. Краткое резюме: ПОЛНЫЙ ГЕМОРРОЙ.