Jump to content
Search In
  • More options...
Find results that contain...
Find results in...
  • Sign Up

Nginx + Мультиязычность.


Recommended Posts

Здравствуйте. Есть проблема.

Установлен Opencart 2.1 + nginx + php-fpm.

С ЧПУ все работает прекрасно, в т.ч. мультиязычность,но, например при поиске выбрасывает на index.php с аргументами, и в языке по умолчанию все ок, но на любом другом языке - file not found. Что можно сделать?

 

Конфиг

	location / {
        try_files $uri @opencart;
    }
    
    location @opencart {
        rewrite ^/(.+)$ /index.php?_route_=$1 last;
    }

	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/USER.sock;
		fastcgi_split_path_info ^((?U).+\.ph(?:p\d*|tml))(/?.+)$;
		fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
		include fastcgi_params;
	}

UPD. Используется SeoPro

Edited by lemurio
Link to comment
Share on other sites


18 минут назад, lemurio сказал:

file not found

Наверное нет языкового файла и nginx тут не причем.

Например для русского есть файл catalog/language/ru-ru/product/search.php, для английского catalog/language/en-gb/product/search.php и т.д.

Link to comment
Share on other sites


1 minute ago, i3bepb said:

Наверное нет языкового файла

Файлы присутствуют. Ситуация такая:

https://site.com/search/

https://site.com/ua/search/

Работают, все переводится. Но, при поиске перебрасывает на

https://site.com/index.php?route=product/search&search=TEST

https://site.com/ua/index.php?route=product/search&search=TEST

Первая ссылка работает без проблем, вторая - file not found. Если вручную ввести

https://site.com/search/?search=TEST

https://site.com/ua/search/?search=TEST

Все равно редиректит на /index.php?route

Link to comment
Share on other sites


Аналогично и с продуктами. В общем, при любом прямом обращении к /ua/index.php - file not found. К /index.php проблем нет. Подозреваю что что-то не дописано в конфиге.

Link to comment
Share on other sites


23 минуты назад, lemurio сказал:

 

Ага понятно. Надо подсмотреть в БД чему соответствует https://site.com/ua/search/?search=TEST т.е. он из этого делает запрос на index.php?_route_=ua/search&search=TEST и потом уже движок на основании параметра _route_ по БД получает index.php?route=product/search&search=TEST&lang=ua , т.е. надо понять какой GET параметр отвечает за то какой язык будет использован и потом можно будет либо поменять конфиг nginx-а, либо вообще добавить в БД еще одно правило

Link to comment
Share on other sites


В бд только одна запись - product/search => search 

Если перейти по ссылке index.php?route=product/search&search=TEST&lang=ua  или по index.php?_route_=ua/search&search=TEST то тут же редиректит на /ua/index.php?route=product/search&search=TEST

 

Link to comment
Share on other sites


Есть наблюдение, если в контроллере product/search заменить GET параметр search на searches то все работает в виде /ua/search/?searches=TEST, с разницей что пагинация и ссылки на товары не ЧПУ и так же содержать /ua/index.php что опять же не работает.

Edited by lemurio
Link to comment
Share on other sites


Да причем здесь opencart
Ошибку 404 (не 500 даже) выдает сервер
Не правильно настроен конфиг nginx - всё, ищите там

Link to comment
Share on other sites

2 minutes ago, markimax said:

Не правильно настроен конфиг nginx - всё, ищите там

Мне идти на форум сисадминов и спрашивать как правильно написать правило для opencart?

Link to comment
Share on other sites


23 минуты назад, lemurio сказал:

В бд только одна запись - product/search => search

А если добавить еще product/search => ua/search ? Должно с языком по умолчанию заработать

Link to comment
Share on other sites


Ну а как он например страницу товара преобразует, он из /ua/ должен как-то получить GET параметр. Страницы товара, например или каталога, то работают на разных языках? Как там получается? Соответствие по записи из БД или как-то в коде?

Edited by i3bepb
Link to comment
Share on other sites


В БД все прописано в единственном экземпляре, мультиязычность используется та которая из коробки.проблему решил заменой в контроллере GET параметра search на searches. Все работает. Тему можно закрывать, спасибо за помощь.

Link to comment
Share on other sites


1 минуту назад, lemurio сказал:

 мультиязычность используется та которая из коробки.

Из коробки нету такой мультиязычности

 

3 часа назад, lemurio сказал:

Какой модуль используете?
Судя по всему пиратский

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

×
×
  • Create New...

Important Information

On our site, cookies are used and personal data is processed to improve the user interface. To find out what and what personal data we are processing, please go to the link. If you click "I agree," it means that you understand and accept all the conditions specified in this Privacy Notice.