Вопрос по ЧПУ

Вопросы по работе Веб сервера
Apache + Nginx, Nginx + PHP5-FPM
sag-sag
Posts: 153
Joined: Sun Feb 15, 2015 7:00 pm
Contact:

Вопрос по ЧПУ

Postby sag-sag » Mon Mar 20, 2017 12:42 pm

Данные сервера:
Debian+VestaCP
nginx+phpfpm

Мой форум работает на движке Xenforo. В админке есть функция:
Использовать ЧПУ-ссылки
При включении этой опции, ссылки, сгенерированные системой, не будут включать в себя "index.php?". Однако, чтобы эта функция работала, на сервере должен быть включен модуль mod_rewrite, и соответствующий .htaccess файл должен храниться в корневой папке форума.

Как только я включаю ЧПУ, и пытаюсь войти в какую-либо тему, валится ошибка 404.

Установил я mod_rewrite:

Code: Select all

a2enmod rewrite

В .htaccess:

Code: Select all

<IfModule mod_rewrite.c>
   RewriteEngine On

   #   If you are having problems with the rewrite rules, remove the "#" from the
   #   line that begins "RewriteBase" below. You will also have to change the path
   #   of the rewrite to reflect the path to your XenForo installation.
   #RewriteBase /xenforo

   #   This line may be needed to enable WebDAV editing with PHP as a CGI.
   #RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]

   RewriteCond %{REQUEST_FILENAME} -f [OR]
   RewriteCond %{REQUEST_FILENAME} -l [OR]
   RewriteCond %{REQUEST_FILENAME} -d
   RewriteRule ^.*$ - [NC,L]
   RewriteRule ^(data/|js/|styles/|install/|favicon\.ico|crossdomain\.xml|robots\.txt) - [NC,L]
   RewriteRule ^.*$ index.php [NC,L]
</IfModule>


В офф документации Xenforo написано следующее:
Для активации ЧПУ на Nginx серверах добавьте следующий код в конфигурационный файл своего сервера:

Code: Select all

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 ~ \.php$ {
    try_files $uri =404;
    fastcgi_pass    127.0.0.1:9000;
    fastcgi_param   SCRIPT_FILENAME $document_root$fastcgi_script_name;
    include         fastcgi_params;
}

Вот и возник вопрос, что за конфигурационный файл имеется ввиду? /etc/nginx/nginx.conf? Правильно?
До этого держал этот форум на хостинге и проблем не имел. А вот переехал к себе, столкнулся с этим вопросом.

sag-sag
Posts: 153
Joined: Sun Feb 15, 2015 7:00 pm
Contact:

Re: Вопрос по ЧПУ

Postby sag-sag » Mon Mar 20, 2017 12:49 pm

Если прописываю в /etc/nginx/nginx.conf?, то nginx после перезапуска вообще не поднимается...

Alex Connor
Collaborator
Posts: 679
Joined: Fri Mar 21, 2014 7:49 am
Location: UA
Contact:

Re: Вопрос по ЧПУ

Postby Alex Connor » Mon Mar 20, 2017 1:09 pm

Имеется ввиду файл

Code: Select all

/home/%username%/conf/web/[s]nginx.conf

ищите в нем секцию, которая отвечает за нужный домен и правьте

sag-sag
Posts: 153
Joined: Sun Feb 15, 2015 7:00 pm
Contact:

Re: Вопрос по ЧПУ

Postby sag-sag » Wed Mar 22, 2017 8:26 pm

Вообщем пытаюсь вписывать, не выходит:

Модуль mod_rewrite установлен. Если верить офф документации под nginx: https://xenforo.com/help/friendly-urls/. Я должен вписать в конфиг под nginx:

Code: Select all

location /xf/ {
    try_files $uri $uri/ /xf/index.php?$uri&$args;
    index index.php index.html;
}

location /xf/install/data/ {
    internal;
}
location /xf/install/templates/ {
    internal;
}
location /xf/internal_data/ {
    internal;
}
location /xf/library/ {
    internal;
}

location ~ \.php$ {
    try_files $uri =404;
    fastcgi_pass    127.0.0.1:9000;
    fastcgi_param   SCRIPT_FILENAME $document_root$fastcgi_script_name;
    include         fastcgi_params;
}


Собственно что я и делаю:

Code: Select all

location / {

        location ~* ^.+\.(jpeg|jpg|png|gif|bmp|ico|svg|css|js)$ {
            expires     max;
        }
       
        location /сайт.ру/ {
                try_files $uri $uri/ /сайт.ру/index.php?$uri&$args;
                index index.php index.html;
        }

        location /сайт.ру/install/data/ {
                internal;
        }
        location /сайт.ру/install/templates/ {
                internal;
        }
        location /сайт.ру/internal_data/ {
                internal;
        }
        location /сайт.ру/library/ {
                internal;
        }

        location ~ \.php$ {
            try_files $uri =404;
            fastcgi_pass    127.0.0.1:9000;
            fastcgi_param   SCRIPT_FILENAME $document_root$fastcgi_script_name;
            include         fastcgi_params;
        }
    }


Перезапускаю nginx. Увы все равно ошибка 404 при входе в темы... Не могу понять, что не так... Может я не правильно вписываю?
По дефолту локейшен у меня такой:

Code: Select all

location / {

        location ~* ^.+\.(jpeg|jpg|png|gif|bmp|ico|svg|css|js)$ {
            expires     max;
        }

        location ~ [^/]\.php(/|$) {
            fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
            if (!-f $document_root$fastcgi_script_name) {
                return  404;
            }

            fastcgi_pass    127.0.0.1:9003;
            fastcgi_index   index.php;
            include         /etc/nginx/fastcgi_params;
        }
    }

Duck83
Posts: 7
Joined: Thu Aug 24, 2017 10:33 am

Re: Вопрос по ЧПУ

Postby Duck83 » Wed Sep 13, 2017 11:42 am

sag-sag wrote:Данные сервера:
Debian+VestaCP
nginx+phpfpm

Мой форум работает на движке Xenforo. В админке есть функция:
Использовать ЧПУ-ссылки
При включении этой опции, ссылки, сгенерированные системой, не будут включать в себя "index.php?". Однако, чтобы эта функция работала, на сервере должен быть включен модуль mod_rewrite, и соответствующий .htaccess файл должен храниться в корневой папке форума.

Как только я включаю ЧПУ, и пытаюсь войти в какую-либо тему, валится ошибка 404.

Установил я mod_rewrite:

Code: Select all

a2enmod rewrite

В .htaccess:

Code: Select all

<IfModule mod_rewrite.c>
   RewriteEngine On

   #   If you are having problems with the rewrite rules, remove the "#" from the
   #   line that begins "RewriteBase" below. You will also have to change the path
   #   of the rewrite to reflect the path to your XenForo installation.
   #RewriteBase /xenforo

   #   This line may be needed to enable WebDAV editing with PHP as a CGI.
   #RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]

   RewriteCond %{REQUEST_FILENAME} -f [OR]
   RewriteCond %{REQUEST_FILENAME} -l [OR]
   RewriteCond %{REQUEST_FILENAME} -d
   RewriteRule ^.*$ - [NC,L]
   RewriteRule ^(data/|js/|styles/|install/|favicon\.ico|crossdomain\.xml|robots\.txt) - [NC,L]
   RewriteRule ^.*$ index.php [NC,L]
</IfModule>


В офф документации Xenforo написано следующее:
Для активации ЧПУ на Nginx серверах добавьте следующий код в конфигурационный файл своего сервера:

Code: Select all

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 ~ \.php$ {
    try_files $uri =404;
    fastcgi_pass    127.0.0.1:9000;
    fastcgi_param   SCRIPT_FILENAME $document_root$fastcgi_script_name;
    include         fastcgi_params;
}

Вот и возник вопрос, что за конфигурационный файл имеется ввиду? /etc/nginx/nginx.conf? Правильно?
До этого держал этот форум на хостинге и проблем не имел. А вот переехал к себе, столкнулся с этим вопросом.


Решил ли свою проблему? Столкнулся с аналогичной задачей, интересует решение.

insound
Posts: 41
Joined: Wed Sep 17, 2014 8:34 pm
Contact:

Re: Вопрос по ЧПУ

Postby insound » Mon Sep 18, 2017 4:31 pm

Nginx настолько гибкий что все ваши проблемы решаются в пару строк. Тут форум панели управления, а не шаблонами по факту для панели, учебников в интернете и даже конвертилок с апач конфигов в пхп-фпм для нжинкса просто куча.
Я сам много лет назад задавался подобными вопросами про xenforo итп, благополучно все сам допилил. Универсальных конфигов прям вот что бы коробочно работало - вам дали с вестой, далее каждый кастомит под себя. Если я скину свой конфиг - у вас он работать не будет, тк у меня своеобразно все настроено и ваш стоковый нжинкс даже не стартанет с ними. У каждого движка есть мануал как запустить его на пхп-фпм и даже как работать с кешированием мимо пхп, просто погуглите ненмого.


Return to “Веб сервер”



Who is online

Users browsing this forum: No registered users and 3 guests