Решено ЧПУ отдаёт 404

Статус
В этой теме нельзя размещать новые ответы.

HAIM

Проверенные
Сообщения
1,251
Решения
6
Реакции
2,224
Баллы
1,020
Залил чистый XF на вдс-сервер, попросил тех. поддержку хостера добавить в конфиг код для nginx-конфига из с учетом смены путей на актуальные, но при активации галочки "Использовать ЧПУ-ссылки" страницы отдают 404 (/index.php?whats-new/ работает, /whats-new/ — 404). В консоли браузера на странице с ошибкой ничего интересного — только одна строка ошибки Failed to load resource: the server responded with a status of 404 (Not Found)

В чем может быть дело?
 
В том то и дело, что конфиг я брал с сайта разработчиков, а заливал и менял его человек из технической поддержки, который по определению знает больше меня ¯\_(ツ)_/¯ Я бы написал в itldc, но я не знаю что именно мне нужно спрашивать/уточнять

Вот фулл nginx конфиг сайта
Код:
server {
    server_name site.ru www.site.ru;
    charset off;
    index index.php;
    disable_symlinks if_not_owner from=$root_path;
    include /etc/nginx/vhosts-includes/*.conf;
    include /etc/nginx/vhosts-resources/site.ru/*.conf;
    access_log /var/www/httpd-logs/site.ru.access.log;
    error_log /var/www/httpd-logs/site.ru.error.log notice;
    ssi on;
    set $root_path /var/www/www-root/data/www/site.ru;
    root $root_path;
    location / {
        location ~ [^/]\.ph(p\d*|tml)$ {
            try_files /does_not_exists @php;
        }
    }
    listen 195.123.209.54:80;
    location @php {
        fastcgi_index index.php;
        fastcgi_param PHP_ADMIN_VALUE "sendmail_path = /usr/sbin/sendmail -t -i -f [email protected]";
        fastcgi_pass unix:/var/www/php-fpm/www-root.sock;
        fastcgi_split_path_info ^((?U).+\.ph(?:p\d*|tml))(/?.+)$;
        try_files $uri =404;
        include fastcgi_params;
    }
}
server {
    server_name site.ru www.site.ru;
    ssl_certificate "/var/www/httpd-cert/www-root/site.ru_le2.crtca";
    ssl_certificate_key "/var/www/httpd-cert/www-root/site.ru_le2.key";
    ssl_ciphers EECDH:+AES256:-3DES:RSA+AES:!NULL:!RC4;
    ssl_prefer_server_ciphers on;
    ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
    ssl_dhparam /etc/ssl/certs/dhparam4096.pem;
    charset off;
    index index.php;
    disable_symlinks if_not_owner from=$root_path;
    include /etc/nginx/vhosts-includes/*.conf;
    include /etc/nginx/vhosts-resources/site.ru/*.conf;
    access_log /var/www/httpd-logs/site.ru.access.log;
    error_log /var/www/httpd-logs/site.ru.error.log notice;
    ssi on;
    set $root_path /var/www/www-root/data/www/site.ru;
    root $root_path;
    location / {
        location ~ [^/]\.ph(p\d*|tml)$ {
            try_files /does_not_exists @php;
        }
    }
    location /xf/ {
        try_files $uri $uri/ /xf/index.php?$uri&$args;
        index index.php index.html;
        }   

    location /xf/internal_data/ {
        internal;
    }       
    location /xf/library/ {
    internal;
    }   
    listen 195.123.209.54:443 ssl;
    location @php {
        fastcgi_index index.php;
        #fastcgi_param PHP_ADMIN_VALUE "sendmail_path = /usr/sbin/sendmail -t -i -f [email protected]";
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        fastcgi_pass unix:/var/www/php-fpm/www-root.sock;
        fastcgi_split_path_info ^((?U).+\.ph(?:p\d*|tml))(/?.+)$;
        try_files $uri =404;
        include fastcgi_params;
    }
}
 
Последнее редактирование:
Залил чистый XF на вдс-сервер,
попросил тех. поддержку хостера добавить в конфиг код для nginx-конфига
Если у вас VDS (а не хостинг), то править хостинг вы должно быть можете сами.
А если можете сами, то путем тестов можете понять в чем проблема.
 
Если у вас VDS (а не хостинг), то править хостинг вы должно быть можете сами.
А если можете сами, то путем тестов можете понять в чем проблема.
У меня VDS. Если бы я что-то понимал в администрировании серверов, то обязательно попробовал бы, но у меня таких знаний нет, а на лайв сервере действовать в слепую у меня нет никакого желания.
 
1. Ищите директорию с файлами службы nginx, зачастую /etc/nginx/
2. В подкаталоге этой директории зачастую находятся конфиги сайтов, обычно они так и называются: sitename.conf
3. Конфиг сайта обычно имеет следующий вид:
NGINX:
server {
.....
    location / {
        index index.php index.html;
        try_files $uri $uri/ /index.php?$args;

    location /forum/ {
        try_files $uri $uri/ /forum/index.php?$uri&$args;
    }
}
...
}
В моем случае /forum/ - это то, где располагается мой форум. Если директория форума другая - то правило для ЧПУ будет работать некорректно (вероятно как у вас).

Если хотите готовое правило, то предоставьте свой конфиг и директорию где находится форум.
 
Qua, дак вот же он
В том то и дело, что конфиг я брал с сайта разработчиков, а заливал и менял его человек из технической поддержки, который по определению знает больше меня ¯\_(ツ)_/¯ Я бы написал в itldc, но я не знаю что именно мне нужно спрашивать/уточнять

Вот фулл nginx конфиг сайта
Код:
server {
    server_name site.ru www.site.ru;
    charset off;
    index index.php;
    disable_symlinks if_not_owner from=$root_path;
    include /etc/nginx/vhosts-includes/*.conf;
    include /etc/nginx/vhosts-resources/site.ru/*.conf;
    access_log /var/www/httpd-logs/site.ru.access.log;
    error_log /var/www/httpd-logs/site.ru.error.log notice;
    ssi on;
    set $root_path /var/www/www-root/data/www/site.ru;
    root $root_path;
    location / {
        location ~ [^/]\.ph(p\d*|tml)$ {
            try_files /does_not_exists @php;
        }
    }
    listen 195.123.209.54:80;
    location @php {
        fastcgi_index index.php;
        fastcgi_param PHP_ADMIN_VALUE "sendmail_path = /usr/sbin/sendmail -t -i -f [email protected]";
        fastcgi_pass unix:/var/www/php-fpm/www-root.sock;
        fastcgi_split_path_info ^((?U).+\.ph(?:p\d*|tml))(/?.+)$;
        try_files $uri =404;
        include fastcgi_params;
    }
}
server {
    server_name site.ru www.site.ru;
    ssl_certificate "/var/www/httpd-cert/www-root/site.ru_le2.crtca";
    ssl_certificate_key "/var/www/httpd-cert/www-root/site.ru_le2.key";
    ssl_ciphers EECDH:+AES256:-3DES:RSA+AES:!NULL:!RC4;
    ssl_prefer_server_ciphers on;
    ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
    ssl_dhparam /etc/ssl/certs/dhparam4096.pem;
    charset off;
    index index.php;
    disable_symlinks if_not_owner from=$root_path;
    include /etc/nginx/vhosts-includes/*.conf;
    include /etc/nginx/vhosts-resources/site.ru/*.conf;
    access_log /var/www/httpd-logs/site.ru.access.log;
    error_log /var/www/httpd-logs/site.ru.error.log notice;
    ssi on;
    set $root_path /var/www/www-root/data/www/site.ru;
    root $root_path;
    location / {
        location ~ [^/]\.ph(p\d*|tml)$ {
            try_files /does_not_exists @php;
        }
    }
    location /xf/ {
        try_files $uri $uri/ /xf/index.php?$uri&$args;
        index index.php index.html;
        }  

    location /xf/internal_data/ {
        internal;
    }      
    location /xf/library/ {
    internal;
    }  
    listen 195.123.209.54:443 ssl;
    location @php {
        fastcgi_index index.php;
        #fastcgi_param PHP_ADMIN_VALUE "sendmail_path = /usr/sbin/sendmail -t -i -f [email protected]";
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        fastcgi_pass unix:/var/www/php-fpm/www-root.sock;
        fastcgi_split_path_info ^((?U).+\.ph(?:p\d*|tml))(/?.+)$;
        try_files $uri =404;
        include fastcgi_params;
    }
}
 
Полагаю вам следует сделать так:
NGINX:
    location / {
        location ~ [^/]\.ph(p\d*|tml)$ {
            try_files /does_not_exists @php;
        }
    
        location /xf/ {
        try_files $uri $uri/ /xf/index.php?$uri&$args;
        index index.php index.html;
        }
        location /xf/internal_data/ {
        internal;
        }     
        location /xf/library/ {
        internal;
        } 
    }
 
location /xf/internal_data/ { internal; } location /xf/library/ { internal;
А вот тут так и должно быть /xf/, разве? Если по факту там ксенфоро не установлен? Может быть проблема с путями? ?
 
А вот тут так и должно быть /xf/, разве? Если по факту там ксенфоро не установлен? Может быть проблема с путями? ?
Вместо "xf" там должно быть имя вашей директории для форума, выше писал.
 
Qua, а после изменения путей нужно перезагружать сервер, или в случае правильного конфига все заработает без перезагрузки?
systemctl reload nginx
Это обновит все конфиги, но без перезагрузки всего веб-сервера
 
NGINX:
server {
    server_name site.ru www.site.ru;
    charset off;
    index index.php;
    disable_symlinks if_not_owner from=$root_path;
    include /etc/nginx/vhosts-includes/*.conf;
    include /etc/nginx/vhosts-resources/site.ru/*.conf;
    access_log /var/www/httpd-logs/site.ru.access.log;
    error_log /var/www/httpd-logs/site.ru.error.log notice;
    ssi on;
    set $root_path /var/www/www-root/data/www/site.ru;
    root $root_path;

    location / {
        try_files $uri $uri/ /index.php?$uri&$args;
        index index.php index.html;
        location ~ [^/]\.ph(p\d*|tml)$ {
            try_files /does_not_exists @php;
        }
    }
 
    location /install/data/ {
        internal;
    }

    location /install/templates/ {
        internal;
    }

    location ~ /(internal_data|library|src)/ {
        internal;
    }

    listen 195.123.209.54:80;
    location @php {
        fastcgi_index index.php;
        fastcgi_param PHP_ADMIN_VALUE "sendmail_path = /usr/sbin/sendmail -t -i -f [email protected]";
        fastcgi_pass unix:/var/www/php-fpm/www-root.sock;
        fastcgi_split_path_info ^((?U).+\.ph(?:p\d*|tml))(/?.+)$;
        try_files $uri =404;
        include fastcgi_params;
    }
}
server {
    server_name site.ru www.site.ru;
    ssl_certificate "/var/www/httpd-cert/www-root/site.ru_le2.crtca";
    ssl_certificate_key "/var/www/httpd-cert/www-root/site.ru_le2.key";
    ssl_ciphers EECDH:+AES256:-3DES:RSA+AES:!NULL:!RC4;
    ssl_prefer_server_ciphers on;
    ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
    ssl_dhparam /etc/ssl/certs/dhparam4096.pem;
    charset off;
    index index.php;
    disable_symlinks if_not_owner from=$root_path;
    include /etc/nginx/vhosts-includes/*.conf;
    include /etc/nginx/vhosts-resources/site.ru/*.conf;
    access_log /var/www/httpd-logs/site.ru.access.log;
    error_log /var/www/httpd-logs/site.ru.error.log notice;
    ssi on;
    set $root_path /var/www/www-root/data/www/site.ru;
    root $root_path;

    location / {
        try_files $uri $uri/ /index.php?$uri&$args;
        index index.php index.html;
        location ~ [^/]\.ph(p\d*|tml)$ {
            try_files /does_not_exists @php;
        }
    }

    location /install/data/ {
        internal;
    }

    location /install/templates/ {
        internal;
    }

    location ~ /(internal_data|library|src)/ {
        internal;
    }

    listen 195.123.209.54:443 ssl;
    location @php {
        fastcgi_index index.php;
        #fastcgi_param PHP_ADMIN_VALUE "sendmail_path = /usr/sbin/sendmail -t -i -f [email protected]";
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        fastcgi_pass unix:/var/www/php-fpm/www-root.sock;
        fastcgi_split_path_info ^((?U).+\.ph(?:p\d*|tml))(/?.+)$;
        try_files $uri =404;
        include fastcgi_params;
    }
}
nginx -t
Если всё хорошо.
nginx -s reload
 
Статус
В этой теме нельзя размещать новые ответы.
Современный облачный хостинг провайдер | Aéza
Назад
Сверху Снизу