Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Подскажите. Обработчик запросов: mod_rewrite или AddHandler+Action

1.9K
30 августа 2006 года
eliteMOBILE
89 / / 27.01.2005
Уважаемые коллеги, прошу дать совет!

На сайте происходит запрос страницы, например http://site.com/forum/page.html
Такой папки и страницы физически не существует. Необходимо перехватывать запросы посетителей и запускать обработчик этих запросов, например PHP скрипт. При запуске обработчика ему передается в параметре путь запрошенной страницы чтобы этот обработчик смог вывести соответствующее содержание.

Я нашел два способа решения этой проблемы:
1. создаю mod_rewrite который запустит скрипт и передаст ему в параметре запрошенный путь
2. в .htaccess пишу следующее:
AddHandler htm-handler .html
Action htm-handler "htm.php?"

В первом случае можно запросить любой путь и скрипт вызовется для его обработки. Недостаток в том, что этот mod_rewrite engine работает медленно в связи с присутствием регулярных выражений (может это и не так).

Во втором слуучае обработчик будет запущен лишьв том случае, когда запрошенная директория существует. Способ этот мне подходит, однако не подходит лишь то, что требуется создавать директории, которых может быть очень много.

Прошу Вас дать мне совет по данной теме, может кто знает как настроить обработчик Apach, тогда как у меня обычный хостинг план на сервере хостера. Так же хочу получить информацию о том способе, который работает быстрее (например в mod_rewrite мне не нравится что он медленный).

Спасибо за ваше внимание. Жду ваших предложений.
13
30 августа 2006 года
RussianSpy
3.0K / / 04.07.2006
[QUOTE=eliteMOBILE.net] Недостаток в том, что этот mod_rewrite engine работает медленно в связи с присутствием регулярных выражений (может это и не так).[/QUOTE]

Это не так. Тебе хватит его производительности за глаза.

[QUOTE=eliteMOBILE.net]
Во втором слуучае обработчик будет запущен лишьв том случае, когда запрошенная директория существует. Способ этот мне подходит, однако не подходит лишь то, что требуется создавать директории, которых может быть очень много.
[/QUOTE]
А что мешает добавить строку: ErrorDocument 404 ПУТЬ_К_СКРИПТУ

А вообще надо нормально настроить mod_rewrite и не придумывать "запретные страницы камасутры". Зачем самому себе усложнять жизнь. А насчет медлительности mod_rewrite... Лично я не замечал ничего такого. Лучше тебе заняться оптимизацией своих скриптов и алгоритмов - уверяю тебя что там тормозов несравнимо больше.
1.9K
30 августа 2006 года
eliteMOBILE
89 / / 27.01.2005
[QUOTE=RussianSpy]
- Вот тебе две таблетки,- сказал Морфеус, - красная и синяя.
- Зачем? - спросил Нео,- я не принимаю наркотики.
- Дурак! Одна из них логин от Матрицы, а вторая пароль.
[/QUOTE]

Классная подпись!

У меня на одном движке предполагается размещать до тысячи сайтов, каждый из которых будет хорошо посещаем. В таком случае движек должен обработать много запросов. Мне нужен наиболее быстрый вызов обработчика....
13
30 августа 2006 года
RussianSpy
3.0K / / 04.07.2006
[QUOTE=eliteMOBILE.net]Классная подпись![/QUOTE]
Спасибо.

В любом случае mod_rewrite будет быстрее, чем тупой разбор урла средствами РНР. Используй mod_rewrite и не переживай.
1.9K
30 августа 2006 года
eliteMOBILE
89 / / 27.01.2005
RussianSpy, я благодарен за помошь. Мне хочется выслушать другие мысли по этому поводу, может кто имеет реальный опыт работы в такой схеме?

Буду очень вам признателен.
13
30 августа 2006 года
RussianSpy
3.0K / / 04.07.2006
Я и имею опыт работы с обеими схемами.
Основные минусы использования 404 ошибки является то что данные передаваемые методом POST не могут быть получены. Они будут переданы несуществующей странице и в итоге будут утеряны. С mod_rewrite такого не происходит. К тому же в любом случае обработка средствами РНР будет медленнее чем скомпилированным модулем коим является mod_rewrite.

Минусы использования mod_rewrite: относительно сложно написать правила, не будет работать под другими веб-серверами (хотя к 404 ошибке это тоже относится) - настройки для других серверов придется писать заново с нуля.
1.9K
30 августа 2006 года
eliteMOBILE
89 / / 27.01.2005
> настройки для других серверов придется писать заново с нуля.
Но ведь настройки я напишу у себя в .htaccess и их же перенесу на сервак. Здесь проблеем я не вижу

> хотя к 404 ошибке это тоже относится
А как выдать скриптом 404 ошибку. Я в течение двух лет думал над этим, но кроме Header('Location: http://site.com/404.shtml') другого выходя не нашел. Может есть способ вывода браузеру ошибки 404 ???
13
30 августа 2006 года
RussianSpy
3.0K / / 04.07.2006
[QUOTE=eliteMOBILE.net]> настройки для других серверов придется писать заново с нуля.
Но ведь настройки я напишу у себя в .htaccess и их же перенесу на сервак. Здесь проблеем я не вижу[/QUOTE]

Я имею ввиду веб-серверы которые НЕ АПАЧ
[QUOTE=eliteMOBILE.net]
> хотя к 404 ошибке это тоже относится
А как выдать скриптом 404 ошибку. Я в течение двух лет думал над этим, но кроме Header('Location: http://site.com/404.shtml') другого выходя не нашел. Может есть способ вывода браузеру ошибки 404 ???[/QUOTE]
Никак. Это ошибка сервера а не клиента. А я имел ввиду в .htaccess прописать:
ErrorDocument 404 script.php
и уже в файле script.php обрабатывать URL. Если страница не существует, то веб-сервер вызовет script.php. Таким образом мы получаем данные по запросу GET (потому что они содержатся в адресе) а вот POST мы теряем.
1.9K
30 августа 2006 года
eliteMOBILE
89 / / 27.01.2005
Спасибо За ваш ответ!
Я скорее всего так и сделаю. Буду пользоваться rewrite engine.

Я все таки хотел бы знать, есть ли способ перехватывать запросы сервера и давать их на обработку своему скрипту
13
30 августа 2006 года
RussianSpy
3.0K / / 04.07.2006
[QUOTE=eliteMOBILE.net]Спасибо За ваш ответ!
Я скорее всего так и сделаю. Буду пользоваться rewrite engine.

Я все таки хотел бы знать, есть ли способ перехватывать запросы сервера и давать их на обработку своему скрипту[/QUOTE]
Читайт внимательнее что пишут

В .htaccess добавь строку:

ErrorDocument 404 script.php

И управление будет передано скрипту script.php (хотя точнее не управление, а будет вызван этот скрипт)
1.9K
31 августа 2006 года
eliteMOBILE
89 / / 27.01.2005
Я понял идею. Супер, как я не догадался об этом ранее?!
Спасибо за помошь. Вы мне помогли разобраться с rewtite поэтому я прикинул, и понял что использование mod_rewrite будет для меня лучше всего.

Спасибо за помошь!
Кстати, в силе остается вопрос о несуществующей странице. Предположим что запустился мой скрипт обработчик, посмотрел что такую страницу он создать не сможет и должен сообщить клиенту ошибку 404. Я делаю это через header пересылая клиента на страницу 404.shtml. Может есть с PHP стандартная функция вывода 404 ошибки???
1.9K
31 августа 2006 года
eliteMOBILE
89 / / 27.01.2005
Случайно два раза продублировал сообщение, решил заменить его вот этим текстом :)
13
31 августа 2006 года
RussianSpy
3.0K / / 04.07.2006
[QUOTE=eliteMOBILE.net]Может есть с PHP стандартная функция вывода 404 ошибки???[/QUOTE]
Пока нет. Обещали сделать сразу после функции автодизайнера. А потом выпустят специальную функцию liters GetSomeBeer(integer) которая на вход будет принимать количество бутылок и возвращать пиво в литрах. :D

404 страница - это обычная страница ничем не отличающаяся от остальных. Логика проста как старый веник:
 
Код:
if(У_НАС_ЕСТЬ_ЧТО_ПОКАЗАТЬ)
{
include('page1.php');
}
else
{
include('404.php');
}
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог