[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: .htaccess, rewrite, единоразовое двойное выполнени
haZe
Добрый день!
Имею в .htaccess, такой код:

Код
RewriteEngine on

RewriteCond %{REQUEST_URI} !(admin|sub|default|files|styles|images|js|swf|favicon.ico)\/.*$
RewriteRule ^(.*)$ index.php [L,QSA]
RewriteRule ^([^/\.]+)?/?([^/\.]+)?/?([^/\.]+)?/?$ index.php?id1=$1&id2=$2&id3=$3&id4=$4 [L]

Первую половину кода писал не я.
Проблема в том, что в PHP коде я осуществляю запись текста в файл. Т.е. при каждом обращении к странице, что-то дописывается в файл. С этими правилами, текст пишется два раза. Перелопатил все, проблема во второй строчке, потому что если ее убрать, то пишется один раз.
Подскажите пожалуйста, как пофиксить этот баг! Может ли это быть из-за дэнвера?



Спустя 39 минут, 20 секунд (27.10.2009 - 12:51) haZe написал(а):
Первую половину кода дал мне мой друг.
Общая цель, это передать данные и постом и гетом. Т.е. на определенны юрл я отправляю пост-данные, при этом это юрл надо отреврайтить без потери поста.
Но почему-то происходит двойной запрос:
Например ели отправить на /page/1, то сначала выполнится запрос по адресу /, тут же останется пост, а потом уже по /page/1.

Спустя 6 часов, 16 минут, 40 секунд (27.10.2009 - 19:08) kirik написал(а):
Пробовал оставить только последнее правило?

ЗЫ вообще URL в htaccess некрасиво разбирать. Этим должен заниматься роутер в твоем приложении.

Спустя 2 часа, 13 минут, 26 секунд (27.10.2009 - 21:21) haZe написал(а):
Цитата
Пробовал оставить только последнее правило?

Да, не работает, то есть не находит нужную страницу.
Цитата
ЗЫ вообще URL в htaccess некрасиво разбирать. Этим должен заниматься роутер в твоем приложении.

Почему? Как? Я просто всегда думал, что ЧПУ в .htaccess делается.

Спустя 19 часов, 5 минут, 4 секунды (28.10.2009 - 16:27) Семён написал(а):
Цитата (kirik @ 27.10.2009 - 20:08)

ЗЫ вообще URL в htaccess некрасиво разбирать. Этим должен заниматься роутер в твоем приложении.

+1 wub.gif

Спустя 3 часа, 29 минут, 14 секунд (28.10.2009 - 19:56) kirik написал(а):
Цитата (haZe @ 27.10.2009 - 13:21)
Я просто всегда думал, что ЧПУ в .htaccess делается.

Ну смотря какой.. Именно разбирать URL лучше на месте. Тоесть получаешь полный, и оперируешь.

По теме - не скажу, надо тестить.. Методом тыка выяснять где жук smile.gif

Спустя 43 минуты, 51 секунда (28.10.2009 - 20:40) haZe написал(а):
А ты не мог бы хотя б принцип объяснить? ну просто в какую сторону думать и копать.

Спустя 42 минуты, 16 секунд (28.10.2009 - 21:22) kirik написал(а):
Цитата (haZe @ 28.10.2009 - 12:40)
А ты не мог бы хотя б принцип объяснить?

в htaccess прописываешь:
Код
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . index.php [L]


В php принимаешь REQUEST_URI и разбираешь. Ну там через explode() например.. Вариантов немало.

Спустя 26 минут, 46 секунд (28.10.2009 - 21:49) haZe написал(а):
хмм, попробовал, результат = 0
или я что-то не понял?

код:
Код
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . index.php [L]

PHP
echo "<br><br><br>get", print_r($_GET), " post", print_r($_POST), " request", print_r($_REQUEST);

url:
/page/bla/

Выводится на экран:
Цитата
getArray ( ) 1 postArray ( ) 1 requestArray ( [PHPSESSID] => 300de3ff3abad779abd54fefef59d74f ) 1

Гет не ловится, и непонятно, что за единицы.

Спустя 4 минуты, 24 секунды (28.10.2009 - 21:53) Семён написал(а):
Подсказочка пока kirik спит:
Код
$_SERVER['REQUEST_URI']

Спустя 32 минуты, 58 секунд (28.10.2009 - 22:26) haZe написал(а):
ОЙ! \*Смайл бьющийся головой о стену!*\
Во я тупанул жестко! Конечно!
Спасибо, протестил, понял!

Спустя 2 часа, 56 минут, 23 секунды (29.10.2009 - 01:22) haZe написал(а):
Блин, я с ума сошел, долго не мог понять почему у меня _POST пустой.
Потом засунул в самом начале такой скрипт:
PHP
echo "bla";
$disc fopen("aaa.txt""a");
fwrite($disc"date=>" microtime() . "\n");
fclose($disc);

echo это чтоб хэдэры сдохли. Что я увидел в файле....(((
Цитата
date=>0.12500100 1256768274
date=>0.17187700 1256768274

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

Спустя 52 секунды (29.10.2009 - 01:23) haZe написал(а):
Поможите пожалуйста, люди добрые! sad.gif

Спустя 24 минуты, 46 секунд (29.10.2009 - 01:48) haZe написал(а):
Блин, даже такой код дает тот же результат.
PHP
echo "bla";
$disc fopen("aaa.txt""a");
fwrite($disc"date=>" microtime() . "\n");
fclose($disc);
die();

Что-то я упустил в этой жизни((((

Спустя 2 минуты, 56 секунд (29.10.2009 - 01:51) kirik написал(а):
Заархивируй все что не работает, и выложи сюда.

Спустя 12 минут, 46 секунд (29.10.2009 - 02:04) haZe написал(а):

Спустя 11 минут, 1 секунда (29.10.2009 - 02:15) twin написал(а):
А чему ты удивляешься?
microtime(true);

Спустя 2 минуты, 24 секунды (29.10.2009 - 02:17) twin написал(а):
Или ты про две записи?
Так у меня одна... наверно что то глючит у тебя дома.

Спустя 2 минуты, 13 секунд (29.10.2009 - 02:19) haZe написал(а):
мэйби denwer?
блин, надо апач ставить(((

Спустя 1 минута, 19 секунд (29.10.2009 - 02:21) kirik написал(а):
haZe
У меня тоже одну добавляет, все ок.

Спустя 3 минуты, 37 секунд (29.10.2009 - 02:24) haZe написал(а):
Блин, ребят, извините, что так замучал. Спасибо вам за помощь!
Буду от денвера отказыватся(

Спустя 2 минуты, 17 секунд (29.10.2009 - 02:27) twin написал(а):
Цитата
мэйби denwer?
блин, надо апач ставить(((

А у тебя в денвере что, nginx? biggrin.gif

Спустя 1 минута, 10 секунд (29.10.2009 - 02:28) kirik написал(а):
Цитата (haZe @ 28.10.2009 - 18:24)
Буду от денвера отказыватся(

Попробуй XAMPP, ибо замучаешься ставить AMP сервер руками (на винду)..

Спустя 20 часов, 18 минут, 40 секунд (29.10.2009 - 22:46) haZe написал(а):
Цитата (kirik @ 28.10.2009 - 23:28)
Цитата (haZe @ 28.10.2009 - 18:24)
Буду от денвера отказыватся(

Попробуй XAMPP, ибо замучаешься ставить AMP сервер руками (на винду)..

Ухты, интересно, не слышал про такое. Скачал, поставил, попробовать не успел, рубит дико, завтра пробовать буду)

Спустя 10 часов, 1 минута, 22 секунды (30.10.2009 - 08:48) Семён написал(а):
я с XAMPP плавно перешёл на AppServer ибо удобней для тестов. dry.gif

Спустя 5 часов, 29 минут, 57 секунд (30.10.2009 - 14:18) haZe написал(а):
Этот XAMPP жесть
Создал там сайт, а обращатся к нему надо по адресу http://localhost/test/
Проще зенд к хосту подрубить(

Спустя 5 часов, 27 минут, 34 секунды (30.10.2009 - 19:45) kirik написал(а):
Цитата (haZe @ 30.10.2009 - 06:18)
Создал там сайт, а обращатся к нему надо по адресу http://localhost/test/

а что собственно не так?

Спустя 44 минуты, 51 секунда (30.10.2009 - 20:30) haZe написал(а):
В том, что на денвере я пишу http://test/ а тут надо писать http://localhost/test/
Это сильно напрягает и мешает

Спустя 19 минут, 38 секунд (30.10.2009 - 20:50) kirik написал(а):
haZe
так это настраивается же в конфиге апача, и в файле hosts потом.

Спустя 9 минут, 45 секунд (30.10.2009 - 21:00) haZe написал(а):
мм, а не подскажешь где?

Спустя 57 минут, 24 секунды (30.10.2009 - 21:57) kirik написал(а):

Спустя 1 день, 16 часов, 31 минута, 52 секунды (2.11.2009 - 14:29) haZe написал(а):
СТОП!
Ради интереса попробовал на хосте запустить.
С таким >htaccess-ом
Код
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . index.php [L]

Результат тот же что и на дэнвере. два раза пишет в файл(

Спустя 3 часа, 18 минут, 53 секунды (2.11.2009 - 17:48) haZe написал(а):
Все. Все мои мучения кончились.
Не знаю, то ли мистика, то ли я дурак. Скорее второе.
В и тоге у меня получился такой .htaccess:
Код
RewriteCond %{REQUEST_URI} !(sub|default|files|swf|favicon.ico|style)\/.*$
RewriteRule ^(.*)$ index.php?s=$1 [L]

И все работает правильно.
Думаю просто надо внимательнее следить за своим кодом.
Еще раз спасибо и извините за беспокойство, по глупости(((
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.