Page 1 of 1

Вопрос по ЧПУ

Posted: Mon Mar 20, 2017 12:42 pm
by sag-sag
Данные сервера:
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? Правильно?
До этого держал этот форум на хостинге и проблем не имел. А вот переехал к себе, столкнулся с этим вопросом.

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

Posted: Mon Mar 20, 2017 12:49 pm
by sag-sag
Если прописываю в /etc/nginx/nginx.conf?, то nginx после перезапуска вообще не поднимается...

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

Posted: Mon Mar 20, 2017 1:09 pm
by Alex Connor
Имеется ввиду файл

Code: Select all

/home/%username%/conf/web/[s]nginx.conf
ищите в нем секцию, которая отвечает за нужный домен и правьте

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

Posted: Wed Mar 22, 2017 8:26 pm
by sag-sag
Вообщем пытаюсь вписывать, не выходит:

Модуль 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;
        }
    }

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

Posted: Wed Sep 13, 2017 11:42 am
by Duck83
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? Правильно?
До этого держал этот форум на хостинге и проблем не имел. А вот переехал к себе, столкнулся с этим вопросом.
Решил ли свою проблему? Столкнулся с аналогичной задачей, интересует решение.

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

Posted: Mon Sep 18, 2017 4:31 pm
by insound
Nginx настолько гибкий что все ваши проблемы решаются в пару строк. Тут форум панели управления, а не шаблонами по факту для панели, учебников в интернете и даже конвертилок с апач конфигов в пхп-фпм для нжинкса просто куча.
Я сам много лет назад задавался подобными вопросами про xenforo итп, благополучно все сам допилил. Универсальных конфигов прям вот что бы коробочно работало - вам дали с вестой, далее каждый кастомит под себя. Если я скину свой конфиг - у вас он работать не будет, тк у меня своеобразно все настроено и ваш стоковый нжинкс даже не стартанет с ними. У каждого движка есть мануал как запустить его на пхп-фпм и даже как работать с кешированием мимо пхп, просто погуглите ненмого.