Поддержка Проблемы и решения не работают внутренние страницы

  • Решено serj42

    (@serj42)


    Добрый день! возникла проблемка с сайтом. Главная и админка отображаются норм, при переходе на внутренние страницы происходит редирект такого вида
    http://http/hotelelisa.ru/nomera-i-ceny

    есть подозрения что то не то с конфигом nginx

    server {
            ## Your website name goes here.
            server_name hotelelisa.ru www.hotelelisa.ru hotelisa.ru www.hotelisa.ru;
            ## Your only path reference.
            root /var/www/hotel-elisa;
            ## This should be in your http block and if it is, it's not needed here.
            error_log /var/log/nginx/errorHE.log;
            access_log /var/log/nginx/accessHE.log;
            index index.php;
    
            location = /favicon.ico {
                    log_not_found off;
                    access_log off;
            }
    
            location = /robots.txt {
                    allow all;
                    log_not_found off;
                    access_log off;
            }
    
            location / {
                    # This is cool because no php is touched for static content.
                    # include the "?$args" part so non-default permalinks doesn't break when using query string
                    try_files $uri $uri/ /index.php?$args;
            }
    
            location ~ \.php$ {
                    #NOTE: You should have "cgi.fix_pathinfo = 0;" in php.ini
                    include fastcgi.conf ;
                    fastcgi_intercept_errors on;
                    fastcgi_pass unix:/var/run/sockets/hotelelisa.sock ;
    
            }
    
            location ~* \.(js|css|png|jpg|jpeg|gif|ico)$ {
                    expires max;
                    log_not_found off;
            }
    }

    перепробовал разные конфигурации, куда копать уже незнаю

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

    (@fierevere)

    永子

    а адрес сайта и адрес wordpress в админке Настройки>Общие задан корректно?

    Адрес WordPress (URL) http://hotelelisa.ru
    Адрес сайта (URL) http://hotelelisa.ru
    Если вы хотите, чтобы адрес сайта отличался от директории установки WordPress, введите адрес здесь.

    папка сайта /var/www/hotel-elisa
    может быть из за отличающихся названий папки сайта и адреса?

    .htaccess

    # BEGIN WordPress
    <IfModule mod_rewrite.c>
      RewriteEngine On
      RewriteBase /
    
      RewriteCond %{HTTP_HOST} ^hotelelisa\.ru$ [nc]
      RewriteRule ^(.*)$ http://www.hotelelisa.ru/$1 [R=301,L]
    
      RewriteCond %{HTTP_HOST} ^hotelisa.ru [nc]
      RewriteRule ^(.*)$ http://www.hotelelisa.ru/$1 [R=301,L]
    
      RewriteCond %{HTTP_HOST} ^www.hotelisa.ru [nc]
      RewriteRule ^(.*)$ http://www.hotelelisa.ru/$1 [R=301,L]
    
      RewriteCond %{REQUEST_FILENAME} !-f
      RewriteCond %{REQUEST_FILENAME} !-d
      RewriteRule . /index.php [L]
    </IfModule>
    
    # END WordPress
    
    Модератор Yuri

    (@yube)

    папка сайта /var/www/hotel-elisa
    может быть из за отличающихся названий папки сайта и адреса?

    Нет. Там имеется в виду ситуация, когда вордпресс лежит не в корне сайта, а должен делать вид, что в корне. Например, корень сайта /var/www/hotel-elisa, а движок в директории /var/www/hotel-elisa/wordpress/

    Модератор Yui

    (@fierevere)

    永子

    а покажите fastcgi.conf отсюда

            location ~ \.php$ {
                    #NOTE: You should have "cgi.fix_pathinfo = 0;" in php.ini
                    include fastcgi.conf ;

    .htaccess то зачем ? у вас nginx обращается к php через сокет
    апач игнорируется , сам nginx .htaccess не читает

    Модератор Yui

    (@fierevere)

    永子

    server {
            server_name .hotelelisa.ru;
            root /var/www/hotel-elisa;
            error_log /var/log/nginx/errorHE.log;
            access_log /var/log/nginx/accessHE.log;
            location = /favicon.ico {
                    log_not_found off;
                    access_log off;
            }
            location = /robots.txt {
                    allow all;
                    log_not_found off;
                    access_log off;
            }
            location / {
                    index index.html index.php index.htm;
                    try_files $uri $uri/ /index.php?$args;
            }
    
            location ~ \.php$ {
    if ( -f $request_filename ) {fastcgi_pass unix:/var/run/sockets/hotelelisa.sock ; }
    fastcgi_index  index.php;
                            fastcgi_param  SCRIPT_FILENAME  $root$fastcgi_script_name;
                            include        fastcgi.conf; 
            }
    location ~* ^.+\.(woff|ttf|woff2|eot)$ { expires 180d; add_header Vary Accept-Encoding; gzip on; }
    location ~* ^.+\.(jpg|jpeg|png|ico|gif|swf)$ { expires 14d; }
    location ~* ^.+\.(css|js)$ { expires 14d; add_header Vary Accept-Encoding; gzip on; gzip_static on; }
    
    }

    вот так попробуйте

    ps: не забудьте перезагрузить nginx

    • Ответ изменён 7 лет, 1 месяц назад пользователем Yui.
    • Ответ изменён 7 лет, 1 месяц назад пользователем Yui. Причина: опечатка в server_name

    ругается на эту строку
    fastcgi_param SCRIPT_FILENAME $root$fastcgi_script_name;
    оставил ее закомментированой, редиректа на http теперь нет, ссылка верная но теперь по этим адресам внутренних страниц 404

    fastcgi.conf:

    fastcgi_param  SCRIPT_FILENAME    $document_root$fastcgi_script_name;
    fastcgi_param  QUERY_STRING       $query_string;
    fastcgi_param  REQUEST_METHOD     $request_method;
    fastcgi_param  CONTENT_TYPE       $content_type;
    fastcgi_param  CONTENT_LENGTH     $content_length;
    
    fastcgi_param  SCRIPT_NAME        $fastcgi_script_name;
    fastcgi_param  REQUEST_URI        $request_uri;
    fastcgi_param  DOCUMENT_URI       $document_uri;
    fastcgi_param  DOCUMENT_ROOT      $document_root;
    fastcgi_param  SERVER_PROTOCOL    $server_protocol;
    fastcgi_param  HTTPS              $https if_not_empty;
    
    fastcgi_param  GATEWAY_INTERFACE  CGI/1.1;
    fastcgi_param  SERVER_SOFTWARE    nginx/$nginx_version;
    
    fastcgi_param  REMOTE_ADDR        $remote_addr;
    fastcgi_param  REMOTE_PORT        $remote_port;
    fastcgi_param  SERVER_ADDR        $server_addr;
    fastcgi_param  SERVER_PORT        $server_port;
    fastcgi_param  SERVER_NAME        $server_name;
    
    # PHP only, required if PHP was built with --enable-force-cgi-redirect
    fastcgi_param  REDIRECT_STATUS    200;
    
    Модератор Yui

    (@fierevere)

    永子

    ругается потому, что fastcgi.conf переопределяет ее в первой строке,
    попробуйте закомментировать ее там

    если так server_name .hotelelisa.ru;
    то редиректит на http://http/hotelelisa.ru/contacts

    если так server_name http://www.hotelelisa.ru;
    то работает только hotelelisa.ru без www и внутренние ссылки верно срабатывают на http://hotelelisa.ru/info к примеру, но по ним 404

    Модератор Yui

    (@fierevere)

    永子

    server_name не должно содержать протокол

    неверно написал server_name http://www.hotelelisa.ru в первом случае

    эммм…форум добавляет протокол) без http

    сейчас так

    server {
            server_name hotelelisa.ru www.hotelelisa.ru;
    
            root /var/www/hotel-elisa;
            error_log /var/log/nginx/errorHE.log;
            access_log /var/log/nginx/accessHE.log;
            location = /favicon.ico {
                    log_not_found off;
                    access_log off;
            }
            location = /robots.txt {
                    allow all;
                    log_not_found off;
                    access_log off;
            }
            location / {
                    index index.html index.php index.htm;
                    try_files $uri $uri/ /index.php?$args;
            }
    
            location ~ \.php$ {
                    if ( -f $request_filename ) {
                            fastcgi_pass unix:/var/run/sockets/hotelelisa.sock ;
                    }
                    fastcgi_index  index.php;
                    #fastcgi_param  SCRIPT_FILENAME  $root$fastcgi_script_name;
                    include        fastcgi.conf;
            }
            location ~* ^.+\.(woff|ttf|woff2|eot)$ { expires 180d; add_header Vary Accept-Encoding; gzip on; }
            location ~* ^.+\.(jpg|jpeg|png|ico|gif|swf)$ { expires 14d; }
            location ~* ^.+\.(css|js)$ { expires 14d; add_header Vary Accept-Encoding; gzip on; gzip_static on; }
    
    }

    ругается потому, что fastcgi.conf переопределяет ее в первой строке,
    попробуйте закомментировать ее там

    закомментировать в fastcgi.conf?

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