проблема в том, что из 4х параметров реально запрашиваемого URI в варианте с редиректом видим только один т.е. движек "думает" что дёргается index.php а не /nonexistdir/ в варианте с апачем все 4 параметра используют именно /nonexistdir/ Добавлено спустя 58 секунд: ну и в итоге движек сайта тупо отображает морду сайта а не раздел Добавлено спустя 1 минуту 9 секунд: тут http://rekrea.ru/notexistdir/ index.php вообще мелькать не должен Добавлено спустя 1 минуту 16 секунд: должен быть /notexistdir/index.php Добавлено спустя 16 секунд: как тут http://rekrea.ru/dir/ Добавлено спустя 1 минуту 29 секунд: на индейце с редиректом в htaccess всё именно так но он меня не устраивает из за allowoverride
http://rekrea.ru/nginx.txt Добавлено спустя 19 минут: на самом деле сервак - Битриксовая виртуалка, изначально не заточена под fast CGI всё бы ничего с индейцем если бы не папочка с многими тысячами файлов + правила редиректа на index.php в итоге allow override all + моя папка = жуткие тормоза на сервере решил перебраться на php_fpm - а тут такая хрень на ровном месте причём рабочие конфиги с других машин почему то тут тупят в чём причина никак не пойму, но думаю, что трабла где то "повыше" конфига nginx-а конкретного виртуального хоста может в nginx.conf может в fhp-fpm.conf .... мозги уже не варят
визуально всё должно работать и без лишних опций fastcgi_param REQUEST_URI $request_uri; fastcgi_param SCRIPT_NAME $fastcgi_script_name ибо они устанавливаются в подключаемом файле параметров fastcgi что если добавить в секцию пхп строку Код (Text): try_files $uri /index.php; ?
ничего не дало да и не могло дать, т.к. это проверка на наличие файла, с этим тут всё ок директории/файла нет -> выходим по try_files корня на секцию php -> передаём параметры, работаем! должно работать ! но не работает косячит именно передача параметров!
Код (Text): / SCRIPT_FILENAME : ~/index.php SCRIPT_NAME : /index.php PHP_SELF : /index.php REQUEST_URI : / DOCUMENT_URI : /index.php /index.php SCRIPT_FILENAME : ~/index.php SCRIPT_NAME : /index.php PHP_SELF : /index.php REQUEST_URI : /index.php DOCUMENT_URI : /index.php /index.php?a=b SCRIPT_FILENAME : ~/index.php SCRIPT_NAME : /index.php PHP_SELF : /index.php REQUEST_URI : /index.php?a=b DOCUMENT_URI : /index.php /dir/ SCRIPT_FILENAME : ~/dir/index.php SCRIPT_NAME : /dir/index.php PHP_SELF : /dir/index.php REQUEST_URI : /dir/ DOCUMENT_URI : /dir/index.php /dir/index.php SCRIPT_FILENAME : ~/dir/index.php SCRIPT_NAME : /dir/index.php PHP_SELF : /dir/index.php REQUEST_URI : /dir/index.php DOCUMENT_URI : /dir/index.php /dir/index.php?a=b SCRIPT_FILENAME : ~/dir/index.php SCRIPT_NAME : /dir/index.php PHP_SELF : /dir/index.php REQUEST_URI : /dir/index.php?a=b DOCUMENT_URI : /dir/index.php /dir/nodir/ SCRIPT_FILENAME : ~/index.php SCRIPT_NAME : /index.php PHP_SELF : /index.php REQUEST_URI : /dir/nodir/ DOCUMENT_URI : /index.php /dir/nodir/?a=b SCRIPT_FILENAME : ~/index.php SCRIPT_NAME : /index.php PHP_SELF : /index.php REQUEST_URI : /dir/nodir/?a=b DOCUMENT_URI : /index.php /dir/nofile SCRIPT_FILENAME : ~/index.php SCRIPT_NAME : /index.php PHP_SELF : /index.php REQUEST_URI : /dir/nofile DOCUMENT_URI : /index.php /dir/nofile?a=b SCRIPT_FILENAME : ~/index.php SCRIPT_NAME : /index.php PHP_SELF : /index.php REQUEST_URI : /dir/nofile?a=b DOCUMENT_URI : /index.php /nodir/ SCRIPT_FILENAME : ~/index.php SCRIPT_NAME : /index.php PHP_SELF : /index.php REQUEST_URI : /nodir/ DOCUMENT_URI : /index.php /nodir/index.php SCRIPT_FILENAME : ~/index.php SCRIPT_NAME : /index.php PHP_SELF : /index.php REQUEST_URI : /nodir/index.php DOCUMENT_URI : /index.php /nodir/index.php?a=b SCRIPT_FILENAME : ~/index.php SCRIPT_NAME : /index.php PHP_SELF : /index.php REQUEST_URI : /nodir/index.php?a=b DOCUMENT_URI : /index.php /nodir/nodir/ SCRIPT_FILENAME : ~/index.php SCRIPT_NAME : /index.php PHP_SELF : /index.php REQUEST_URI : /nodir/nodir/ DOCUMENT_URI : /index.php /nodir/nodir/?a=b SCRIPT_FILENAME : ~/index.php SCRIPT_NAME : /index.php PHP_SELF : /index.php REQUEST_URI : /nodir/nodir/?a=b DOCUMENT_URI : /index.php /nodir/nofile SCRIPT_FILENAME : ~/index.php SCRIPT_NAME : /index.php PHP_SELF : /index.php REQUEST_URI : /nodir/nofile DOCUMENT_URI : /index.php /nodir/nofile?a=b SCRIPT_FILENAME : ~/index.php SCRIPT_NAME : /index.php PHP_SELF : /index.php REQUEST_URI : /nodir/nofile?a=b DOCUMENT_URI : /index.php где косяк-то?
должно быть так Код (Text): ["REDIRECT_SCRIPT_URI"]=> string(28) "http://rekrea.ru/notexistdir/" ["SCRIPT_URI"]=> string(28) "http://rekrea.ru/notexistdir/" ["SCRIPT_URI"]=> string(28) "http://rekrea.ru/notexistdir/" ["REDIRECT_URL"]=> string(13) "/notexistdir/" ["REQUEST_URI"]=> string(13) "/notexistdir/" Добавлено спустя 1 минуту 21 секунду: в общем - на апаче работает, а так нихрена Добавлено спустя 1 минуту 33 секунды: у Вас тут корректно, у меня нет Добавлено спустя 49 секунд: у меня только REQUEST_URI : /dir/ корректно, остальное нет
REQUEST_URI работает корректно. см выше. какие еще переменные окружения нужны битриксу? при чем тут редирект_скрипт_ури и иже с ними? Добавлено спустя 2 минуты 31 секунду: я не просто так привел именно эти переменные. в них видно что редирект на корневой индекс работает равно как работает использование существующего файла индекса каталога. всё работает как и должно. но я боюсь что это "должно" у битрикса немного жопой писано и я тогда не понимаю чего он хочет. Добавлено спустя 2 минуты 14 секунд: вот еще с существующими файлами - пролетает мимо индекс.пхп Код (Text): /file.php SCRIPT_FILENAME : ~/file.php SCRIPT_NAME : /file.php PHP_SELF : /file.php REQUEST_URI : /file.php DOCUMENT_URI : /file.php /file.php?a=b SCRIPT_FILENAME : ~/file.php SCRIPT_NAME : /file.php PHP_SELF : /file.php REQUEST_URI : /file.php?a=b DOCUMENT_URI : /file.php /dir/file.php SCRIPT_FILENAME : ~/dir/file.php SCRIPT_NAME : /dir/file.php PHP_SELF : /dir/file.php REQUEST_URI : /dir/file.php DOCUMENT_URI : /dir/file.php /dir/file.php?a=b SCRIPT_FILENAME : ~/dir/file.php SCRIPT_NAME : /dir/file.php PHP_SELF : /dir/file.php REQUEST_URI : /dir/file.php?a=b DOCUMENT_URI : /dir/file.php
сам двиг не битрикс, просто на этой виртуалке у меня другое крутиться ... по факту их 4х переменных правильно передаётся только одна, и видимо для отображения двиг вытягивает информацию не из REQUEST_URI (завтра расковыряю движек - выясню это дело) что интересно - в аппаче все 4 корректно передаются, да и у Вас тоже... Добавлено спустя 1 минуту 6 секунд: Да вот моя ситуация - у Вас всё корректно ведь! Добавлено спустя 37 секунд: кстати - тут /dir/ - существующая или нет ? Добавлено спустя 42 секунды: опс Код (Text): /nodir/ SCRIPT_FILENAME : ~/index.php SCRIPT_NAME : /index.php PHP_SELF : /index.php REQUEST_URI : /nodir/ DOCUMENT_URI : /index.php Добавлено спустя 39 секунд: ну тогда ничего не понимаю! на аппаче то работает ...
в любом случае - большое спасибо за помощь! пока таймаут ... подумаю ещё ... убрал var_dump($_server); die(); посмотреть движек - оказывается с этим конфигом index.php уже не главную отображает а 404ю даёт Страница не найдена - причём в шаблоне т.е. отрабатывает index.php ! Добавлено спустя 1 минуту 37 секунд: смотрел $_SERVER
может костыль попробовать? Код (PHP): server { root /var/www; index index.php index.html; location / { try_files $uri @php; #проверка существования файла и потом сваливаемся на фейклокацию } location @php { # описание фейклокации rewrite .* /index.php last; # рерайт любого адреса на индексный файл } location ~ \.php$ { try_files $uri /index.php; # либо существующий пхп-файл либо корневой индекс fastcgi_pass unixphpfpmupstream; # лень копипастить путь к сокету fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; } } Код (Text): / SCRIPT_FILENAME : ~/index.php SCRIPT_NAME : /index.php PHP_SELF : /index.php REQUEST_URI : / DOCUMENT_URI : /index.php /index.php SCRIPT_FILENAME : ~/index.php SCRIPT_NAME : /index.php PHP_SELF : /index.php REQUEST_URI : /index.php DOCUMENT_URI : /index.php /index.php?a=b SCRIPT_FILENAME : ~/index.php SCRIPT_NAME : /index.php PHP_SELF : /index.php REQUEST_URI : /index.php?a=b DOCUMENT_URI : /index.php /file.php SCRIPT_FILENAME : ~/file.php SCRIPT_NAME : /file.php PHP_SELF : /file.php REQUEST_URI : /file.php DOCUMENT_URI : /file.php /file.php?a=b SCRIPT_FILENAME : ~/file.php SCRIPT_NAME : /file.php PHP_SELF : /file.php REQUEST_URI : /file.php?a=b DOCUMENT_URI : /file.php /dir/ SCRIPT_FILENAME : ~/index.php SCRIPT_NAME : /index.php PHP_SELF : /index.php REQUEST_URI : /dir/ DOCUMENT_URI : /index.php /dir SCRIPT_FILENAME : ~/index.php SCRIPT_NAME : /index.php PHP_SELF : /index.php REQUEST_URI : /dir DOCUMENT_URI : /index.php /dir/index.php SCRIPT_FILENAME : ~/dir/index.php SCRIPT_NAME : /dir/index.php PHP_SELF : /dir/index.php REQUEST_URI : /dir/index.php DOCUMENT_URI : /dir/index.php /dir/index.php?a=b SCRIPT_FILENAME : ~/dir/index.php SCRIPT_NAME : /dir/index.php PHP_SELF : /dir/index.php REQUEST_URI : /dir/index.php?a=b DOCUMENT_URI : /dir/index.php /dir/nodir/ SCRIPT_FILENAME : ~/index.php SCRIPT_NAME : /index.php PHP_SELF : /index.php REQUEST_URI : /dir/nodir/ DOCUMENT_URI : /index.php /dir/nodir/?a=b SCRIPT_FILENAME : ~/index.php SCRIPT_NAME : /index.php PHP_SELF : /index.php REQUEST_URI : /dir/nodir/?a=b DOCUMENT_URI : /index.php /dir/nofile SCRIPT_FILENAME : ~/index.php SCRIPT_NAME : /index.php PHP_SELF : /index.php REQUEST_URI : /dir/nofile DOCUMENT_URI : /index.php /dir/nofile?a=b SCRIPT_FILENAME : ~/index.php SCRIPT_NAME : /index.php PHP_SELF : /index.php REQUEST_URI : /dir/nofile?a=b DOCUMENT_URI : /index.php /dir/file.php SCRIPT_FILENAME : ~/dir/file.php SCRIPT_NAME : /dir/file.php PHP_SELF : /dir/file.php REQUEST_URI : /dir/file.php DOCUMENT_URI : /dir/file.php /dir/file.php?a=b SCRIPT_FILENAME : ~/dir/file.php SCRIPT_NAME : /dir/file.php PHP_SELF : /dir/file.php REQUEST_URI : /dir/file.php?a=b DOCUMENT_URI : /dir/file.php /nodir/ SCRIPT_FILENAME : ~/index.php SCRIPT_NAME : /index.php PHP_SELF : /index.php REQUEST_URI : /nodir/ DOCUMENT_URI : /index.php /nodir/index.php SCRIPT_FILENAME : ~/index.php SCRIPT_NAME : /index.php PHP_SELF : /index.php REQUEST_URI : /nodir/index.php DOCUMENT_URI : /index.php /nodir/index.php?a=b SCRIPT_FILENAME : ~/index.php SCRIPT_NAME : /index.php PHP_SELF : /index.php REQUEST_URI : /nodir/index.php?a=b DOCUMENT_URI : /index.php /nodir/nodir/ SCRIPT_FILENAME : ~/index.php SCRIPT_NAME : /index.php PHP_SELF : /index.php REQUEST_URI : /nodir/nodir/ DOCUMENT_URI : /index.php /nodir/nodir/?a=b SCRIPT_FILENAME : ~/index.php SCRIPT_NAME : /index.php PHP_SELF : /index.php REQUEST_URI : /nodir/nodir/?a=b DOCUMENT_URI : /index.php /nodir/nofile SCRIPT_FILENAME : ~/index.php SCRIPT_NAME : /index.php PHP_SELF : /index.php REQUEST_URI : /nodir/nofile DOCUMENT_URI : /index.php /nodir/nofile?a=b SCRIPT_FILENAME : ~/index.php SCRIPT_NAME : /index.php PHP_SELF : /index.php REQUEST_URI : /nodir/nofile?a=b DOCUMENT_URI : /index.php /nonindexeddir/ SCRIPT_FILENAME : ~/index.php SCRIPT_NAME : /index.php PHP_SELF : /index.php REQUEST_URI : /nonindexeddir/ DOCUMENT_URI : /index.php /nonindexeddir/index.php SCRIPT_FILENAME : ~/index.php SCRIPT_NAME : /index.php PHP_SELF : /index.php REQUEST_URI : /nonindexeddir/index.php DOCUMENT_URI : /index.php /nonindexeddir/index.php?a=b SCRIPT_FILENAME : ~/index.php SCRIPT_NAME : /index.php PHP_SELF : /index.php REQUEST_URI : /nonindexeddir/index.php?a=b DOCUMENT_URI : /index.php /nonindexeddir/nodir/ SCRIPT_FILENAME : ~/index.php SCRIPT_NAME : /index.php PHP_SELF : /index.php REQUEST_URI : /nonindexeddir/nodir/ DOCUMENT_URI : /index.php /nonindexeddir/nodir/?a=b SCRIPT_FILENAME : ~/index.php SCRIPT_NAME : /index.php PHP_SELF : /index.php REQUEST_URI : /nonindexeddir/nodir/?a=b DOCUMENT_URI : /index.php /nonindexeddir/nofile SCRIPT_FILENAME : ~/index.php SCRIPT_NAME : /index.php PHP_SELF : /index.php REQUEST_URI : /nonindexeddir/nofile DOCUMENT_URI : /index.php /nonindexeddir/nofile?a=b SCRIPT_FILENAME : ~/index.php SCRIPT_NAME : /index.php PHP_SELF : /index.php REQUEST_URI : /nonindexeddir/nofile?a=b DOCUMENT_URI : /index.php /nonindexeddir/file.php SCRIPT_FILENAME : ~/nonindexeddir/file.php SCRIPT_NAME : /nonindexeddir/file.php PHP_SELF : /nonindexeddir/file.php REQUEST_URI : /nonindexeddir/file.php DOCUMENT_URI : /nonindexeddir/file.php /nonindexeddir/file.php?a=b SCRIPT_FILENAME : ~/nonindexeddir/file.php SCRIPT_NAME : /nonindexeddir/file.php PHP_SELF : /nonindexeddir/file.php REQUEST_URI : /nonindexeddir/file.php?a=b DOCUMENT_URI : /nonindexeddir/file.php существуют каталоги: /dir[/*:m] /nonindexeddir[/*:m][/list:u]существуют файлы: /file.php[/*:m] /index.php[/*:m] /dir/file.php[/*:m] /dir/index.php[/*:m] /nonindexeddir/file.php[/*:m][/list:u] я всё еще не понимаю какие именно переменные окружения ожидает используемый продукт и чем его не устраивает REQUEST_URI
В общем скрипт использовал не только REQUEST_URI но и другие значения в качестве определения "текущего адреса", соответственно подпихивая контент уже по результатам работы. Переписал скрипт ТОЛЬКО на использование REQUEST_URI - всё заработало корректно! Просто интересно, что через рерайты .htaccess для несуществующих файлов идёт полная имитация по всем переменным, а тут только по REQUEST_URI Большое спасибо за помощь, вопрос закрыт! Добавлено спустя 1 минуту 34 секунды: хм... может всё таки nonindexeddir - несуществующий ? (по вардампу так же как у меня несуществующий показывает - только REQUEST_URI на нём, остальные на index.php)
существует но в нем нет индексного файла. это заметно по тому как файл из него (/нониндекседдир/файл.пхп) используется напрямую а всё остальное (несуществующее) - через рут индекс.
другая проблема "вылезла" если php файл не существует - $_GET в index.php приходит пустой на существующий корректно приходит Добавлено спустя 4 минуты 3 секунды: http://rekrea.ru/notexistfile.php?var=val Добавлено спустя 1 минуту 29 секунд: $_GET NULL Добавлено спустя 4 минуты 39 секунд: всё - это решил сам добавил $is_args$args; try_files $uri /index.php$is_args$args;