| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Администрирование Web серверов и Web служб > Скрипт исполняется 2 раза |
| Автор: Chuck 25.8.2005, 15:35 | ||
| Привет всем! У меня возникла такая проблема. Есть скрипт, есть .htaccess файлик
Все бы хорошо, да заметил я, что скрипт исполняется 2 раза, т.е. первый раз он исполняется, но результат работы куда то девается (надеюсь в /dev/null), ну а второй раз уже отдается в браузер! Как избежать 1 запуска? |
| Автор: Mal Hack 25.8.2005, 15:54 |
| Запускаешь на локальном сервере через браузер? Какой показатель показывает, что идет два раза выполнение? |
| Автор: Chuck 25.8.2005, 16:06 | ||
| Запускаю на сервере http://chuck.freemail.uz/ Показатели: в базе поле хитов увеличивается не на 1, а на 2! Так же в конце скрипта вставил такой вот код
Результаты тут http://chuck.freemail.uz/counter.txt Как видите, заходя 1 раз, ваш IP записывается 2 раза! |
| Автор: Mal Hack 25.8.2005, 16:11 |
| Поставь в конце правила [L] |
| Автор: Chuck 25.8.2005, 16:34 |
| Поставил, результат тот же! |
| Автор: Mal Hack 25.8.2005, 16:37 |
| Так, а если в index.php оставить ТОЛЬКО код записи в файл, и проверить, результат - тот же? Полностью .htaccess приведи. |
| Автор: Chuck 25.8.2005, 20:35 | ||||
вот скрипт
Вот файл .htaccess
Может забить на этот RewriteRule и парсить $_SERVER["REQUEST_URI"]? |
| Автор: Irokez 25.8.2005, 20:37 |
| имхо - не поможет ничего, это так mod_rewrite работает.. |
| Автор: Mal Hack 25.8.2005, 20:45 | ||||
Это почему?
Ну это конечно было бы лучше RewriteRule ^.*$ index.php [L.QSA] |
| Автор: Irokez 25.8.2005, 20:50 | ||
потому что у меня была такая же проблема, решил только через запоминание времени в сессии.. |
| Автор: Mal Hack 25.8.2005, 20:54 | ||
Не, ты объясни почему реврайт так работает? Этого не может быть. Значит где-то есть логическая ошибка ;) |
| Автор: Irokez 25.8.2005, 21:01 | ||||
mod_rewrite - модуль для обработки запросов, при переделывании запроса (RewriteRule) мод реврайт получает один запрос, составляет второй и отправляет результат его выполнения браузеру, но при этом то первый запрос он тоже выполняет (?), но просто браузеру он не передает.. хотя логичнее предположить что первый запрос никуда не отправляется, но тогда как может модуль узнать что
если сервер не выполняет первый запрос... тогда и получается: выполняется первый запрос, получаются все данные (является ли запращиваемый ресурс файлом, директорией, линком итп), переделывается согласно правилу и результат отправляется обратно браузеру.. таковы мои рассуждения, возможно я неправ.. чтобы разобраться надо в очередной раз прочитать мануал по мод_реврайту.. |
| Автор: Mal Hack 25.8.2005, 21:11 | ||
не может такого быть, т.к. тогда бы mod_rewrite'ом никто не пользовался, ну сам подумай. |
| Автор: Irokez 25.8.2005, 21:23 | ||
да вот думаю... просто практика показывает обратное... возможно запрос идет "неполный" |
| Автор: Chuck 26.8.2005, 11:54 | ||
Нифига он браузеру не может отрпавлять, глупость! mod_rewrite подобен процедуре, которая перехватывает у apache URI, переделывает его по правилам и, тут самое интересное, посылает запрос (GET, POST, HEAD) (как будто это браузер) опять апачу! Так вот вопрос, как это избежать, как избежать первого запроса .... |
| Автор: Mal Hack 26.8.2005, 12:03 |
| Chuck проблема не может быть в mod_rewrite, если ты не допустил логическую ошибку. Покаи полностью .htaccess. |
| Автор: Irokez 26.8.2005, 12:28 | ||
я про сервер |
| Автор: Chuck 26.8.2005, 13:01 | ||
Mal Hack, вот он
|