htaccess, почему-то вызывает 2 раза index.php

humbert
На сайте с 16.03.2006
Offline
540
1010

Хотелось бы, чтобы все запросы передавались index.php, составил правило

RewriteBase /

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !.(css)|(swf)|(jpg)|(png)|(gif)|(pcx)$
RewriteRule ^(.*)$ /index.php?stranic=$1 [QSA]

В результате index.php вызывается 2 раза почему-то, что сказывается на статистике.

Ставлю счетчик, который в $_SESSION записывает каждый вызов урла, он прибавляется на 2 при каждом вызове, а хотелось бы на один.

Парсинг прайс-листов, наполнение интернет-магазина товаром. (https://humbert.ru) Любая CMS (Битрикс, OpenCart, Prestashop и даже Woo Commerce )
[umka]
На сайте с 25.05.2008
Offline
456
#1

Возможно, есть ещё какие-то редиректы в самом index.php.

Также, можно включить rewrite_log и посмотреть более подробно, какие происходят редиректы.

Лог в помощь!
ДП
На сайте с 23.11.2009
Offline
203
#2

Попробуйте вместо [QSA] написать [QSA,L] -означает что правило последнее

humbert
На сайте с 16.03.2006
Offline
540
#3

[umka], логи ничего не дали, пустой файл создается. На денвере проверяю

Редиректов в index.php нет

Дикий пионер, тоже ничего не дает, т.к. правило стоит последним.

Если правило отключить и вызвать index.php - все работает 1 раз, при включеном правиле работает 2 раза, такое ощущение, что идет выполняет index.php, потом смотрит правило в htaccess и переходит по нужной ссылке.

humbert добавил 20-11-2010 в 18:33

P.s. вот такой код помог


RewriteRule ^([^.]+)$ /index.php?stranic=$1 [QSA]
[umka]
На сайте с 25.05.2008
Offline
456
#4
humbert:
^([^.]+)$

Этим вы просто исключили все запросы с точкой.

А проблема у вас, видимо, в том, что на странице есть, например, несуществующая картинка.

И получается, что сначала загружается index.php.

Он выдаёт html, в котором есть код <img src="non_existent_picture.jpg">.

Браузер пытается загрузить картинку из несуществующего файла, а сервер делает реврайт опять на index.php, т.к. этот несуществующий файл попадает под условие

RewriteCond %{REQUEST_FILENAME} !-f

Поэтому счётчик каждый раз увеличивается на 2.

Вставьте ради проверки две несуществующие картинки, и счётчик будет увеличиваться на 3 :)

P.s. этим файлом может быть также favicon или файл стилей или какой-нить скрипт... много всего можно придумать :)

humbert
На сайте с 16.03.2006
Offline
540
#5

[umka], нет, я на пустом файле пробовал, вообще без картинок и всего

$text=file_get_contents("1.txt")+1;

$f=fopen("1.txt", "w");
fputs($f, $text);
fclose($f);

echo $text;

увеличивал на 2, т.е. скрипт сначала в любом случае идет на index.php, выполняет его, а потом в правила htaccess смотрит и идет на index.php?stranic=$1.

[umka]
На сайте с 25.05.2008
Offline
456
#6
humbert:
[umka], нет, я на пустом файле пробовал, вообще без картинок и всего

Попробуйте положить в корень сайта favicon.ico

Браузеры, как правило, запрашивают его, даже если о нём нет ни слова в html.

humbert
На сайте с 16.03.2006
Offline
540
#7

[umka], есть там favicon и всегда был:)

P.s. всегда запрашивался index.php сначала, без всего, а потом нужный url.

p.p.s. а не может быть такого, что это сам htaccess запрашивался и вызывался index.php?

Что вообще означает это правило?

RewriteRule ^([^.]+)$ /index.php?stranic=$1 [QSA]

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий