Jump to content
Sign in to follow this  
lemurio

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 webmaster@site.com";
		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

Share this post


Link to post
Share on other sites
18 минут назад, lemurio сказал:

file not found

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

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

Share this post


Link to post
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

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
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-а, либо вообще добавить в БД еще одно правило

Share this post


Link to post
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

 

Share this post


Link to post
Share on other sites

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

Edited by lemurio

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites
2 minutes ago, markimax said:

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

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

Share this post


Link to post
Share on other sites
23 минуты назад, lemurio сказал:

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

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

Share this post


Link to post
Share on other sites

Так, к сожалению, тоже не работает,только в редирект добавляет /ua%2Fsearch/

Share this post


Link to post
Share on other sites

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

Edited by i3bepb

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites
1 минуту назад, lemurio сказал:

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

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

 

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

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

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
You are posting as a guest. If you have an account, please sign in.
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this  

  • Recently Browsing   0 members

    No registered users viewing this page.

×

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.