• Вообщем на Nginx такая строчка для ЧПУ:

    location / {
                    try_files $uri $uri/ /index.php?q=$uri&$args;
        }

    Все хорошо работает, но есть проблема, и я не могу понять как решить её. Если в URL написать что то вроде site.ru/testest/index.php учитывая что папки testtest не существует, выводится пустая страница вместе 404 ошибки. Вместо testest естественно можно писать все что угодно и будет выводится пустая страница, главное чтоб index.php был в конце.

    Я просто в растерянности, как оставить ЧПУ и убрать этот косяк с index.php. Может есть у кого идеи или кто-то сталкивался с этим. Буду очень благодарен за подсказки!

Просмотр 15 ответов — с 1 по 15 (всего 16)
  • Модератор Yui

    (@fierevere)

    永子

    пустая страница это

    404 Not Found
    ---------------------
    nginx

    ? или что-то иное?

    location / {
                    index index.php index.html index.htm;
                    try_files $uri $uri/ /index.php?q=$uri&$args;
                }

    попробуйте добавить директиву index
    а еще покажите ваш блок location ~ \.php$

    пустая страница это просто пустая страница, а нужна как раз 404 🙂

    location ~ \.php$ {
                    limit_req zone=php2zone burst=5 nodelay;
                    try_files $uri =404;
                    fastcgi_split_path_info ^(.+\.php)(/.+)$;
                    fastcgi_pass unix:/var/run/php5-fpm.sock;
                    fastcgi_index index.php;
                    fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
                    include fastcgi_params;
        }

    пробовал добавлять директиву index нечего не изменилось

    Модератор Yui

    (@fierevere)

    永子

    location ~ \.php$ {
     limit_req zone=php2zone burst=5 nodelay;
     if ( -f $request_filename ) {fastcgi_pass   unix:/var/run/php5-fpm.sock;}
     fastcgi_index  index.php;
     fastcgi_param  SCRIPT_FILENAME $document_root$fastcgi_script_name;
     include        fastcgi_params;
    }

    а если вот так сделать?
    ну и nginx хорошо бы обновить до актуальной версии 1.8.х , а лучше 1.9.х

    Нет все так же…
    Имхо тут проблема именно в этой строчке

    try_files $uri $uri/ /index.php?q=$uri&$args;

    Как бы nginx проверяет сначала есть ли файл, если нет то есть ли такая папка, если файла и папки такой нет, то отдаёт index’у в виде параметра.

    Я вот подумал это получается пустая страница — это реакция index.php. Т.е. если он получает любые другие запросы типа /testest/sss.php или /testest/ выдает 404, а если в конце index.php то выводит белый экран.
    Я подозреваю может это нужно как то исправить в самой CMS?

    Модератор Sergey Biryukov

    (@sergeybiryukov)

    Live and Learn

    если в конце index.php то выводит белый экран

    А в логе ошибок что-нибудь есть?

    Нет абсолютно нечего

    Модератор Yui

    (@fierevere)

    永子

    goodwin74 , nginx 1.9.14 та конфигурация что я вам рекомендовала

    можете проверить например тут

    Модератор Yui

    (@fierevere)

    永子

    еще можете попробовать вариант без try_files, хотя Сысоев его не рекомендует, тем не менее он тоже рабочий

    # content wordpress
     location / {   index index.php index.html index.htm;
                    if (!-e $request_filename) { rewrite ^.*$ /index.php last;}
    }

    nginx версия 1.9.4
    и выше конфу пробовал и вот которую сейчас кинули, все то же самое. Я говорю у меня создается чувство что не Nginx виноват, а CMS принимая в index.php параметры с URL, выдает пустую страницу при наличии index.php в конце. И думаю нужно это исправлять как то, но если лезть в двиг, то при обновлении все слетит.

    потому что try_files $uri $uri/ /index.php?q=$uri&$args;
    тут все в норме по правилам, если нет файла, смотри есть ли папка, если нет папки то отдаёт всё в index.php, а index.php берёт и выдает пустую страницу при наличии в url «index.php». Логически получает дело в index.php от WP, или я что-то упускаю?

    Модератор Yui

    (@fierevere)

    永子

    а статус ответа какой на «Белой странице» ? 200? 500?

    если WP виноват, то должны бы быть какие то записи в в логах
    чисто белый выхлоп более характерен для PHP нежели для nginx

    Модератор Yui

    (@fierevere)

    永子

    try_files $uri $uri/ /index.php?q=$uri&$args; ?

    а зачем ?
    если можно проще, может на ваше лишнее и возмущается
    try_files $uri $uri/ /index.php?$args;

    Конфа взята с оф сайта. Попробовал убрать, нечего не изменилось. Все так же пустая страница. Я даже не знаю уже куда копать)

    Модератор Sergey Biryukov

    (@sergeybiryukov)

    Live and Learn

    Конфа взята с оф сайта.

    В Кодексе я не вижу q=$uri.

    Я же написал разницы нет, что с ним что без. на index.php все равно выводится белая страница.

Просмотр 15 ответов — с 1 по 15 (всего 16)
  • Тема «Nginx и пустые страницы index.php» закрыта для новых ответов.