Включение URL-адресов SEO в несколько хранилищ и поддоменов на OpenCart с использованием Nginx
Я пытаюсь получить URL-адреса SEO, работающие в мульти-магазинах в OpenCart.
У меня есть два магазина в admin
http://www.shop.com (default)
http://m.shop.com
URL-адреса SEO работают для http://www.shop.com
Но они возвращают not_found.tpl(страница 404) для http://m.shop.com
Однако это работает:
http://m.shop.com/index.php?route=product/product&path=68&product_id=52
SEO мудрый, он должен быть
/index.php?route=product/product&path=68&product_id=52
http://www.shop.com/product-title
http://m.shop.com/product-title (404 returned)
Я использую NGINX. Это config:
www.shop.com
server {
server_name www.shop.com;
listen 80;
root /var/www/www.shop.com/;
index index.php index.html;
location /image/data {
autoindex on;
}
location / {
try_files $uri @opencart;
}
location @opencart {
rewrite ^/(.+)$ /index.php?_route_=$1 last;
}
location ~ \.php$ {
try_files $uri =404;
include /etc/nginx/fastcgi_params;
fastcgi_pass 127.0.0.1:9000;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
}
}
m.shop.com
server {
server_name m.shop.com;
listen 80;
root /var/www/www.shop.com/;
index index.php index.html;
location /image/data {
autoindex on;
}
location / {
try_files $uri @opencart;
}
location @opencart {
rewrite ^/(.+)$ /index.php?_route_=$1 last;
}
location ~ \.php$ {
try_files $uri =404;
include /etc/nginx/fastcgi_params;
fastcgi_pass 127.0.0.1:9000;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
}
}
Ответы
Ответ 1
Я получил эту статью и подробности от кого-то, в моей компании SEO и команда маркетинга используют этот инструмент.
Из Настройте SEO-ссылки на nginx на форумах XenForo:
Это действительно действительно просто.
Учитывая, что вы загрузили XenForo в папку "community", просто добавьте это в свою конфигурацию nginx:
location /community/ {
index index.php index.html index.htm;
try_files $uri $uri/ /community/index.php?$uri&$args;
}
Пока вы на нем, вы также можете добавить это, чтобы заблокировать внешний доступ к папкам "internal_data" и "library".
location ~ ^/community/(internal_data|library)/(.*)$ {
internal;
}
Перезапустите nginx и включите Full Friendly URL.
Из Простые инструкции Easy Multi-Store Setup? на форумах Opencart:
Краткая версия:
создать 2 демо-поддомена
subA.domain.com
subB.domain.com
и "укажите" оба поддомена в одну и ту же папку на вашем веб-узле.
т.е. public_html/магазин
Установите opencart в первый поддомен, а затем пройдите через администратора и добавьте дополнительный магазин.
Таким образом, у вас будет Shop1 subA.domain.com и Shop2 subB.domain.com, которые работают с тем же кодом.
Надеюсь, что это имеет смысл.
Ответ 2
OpenCart не обрабатывает URL-адреса SEO для мультисервисов. Единственный способ сделать это - вручную добавить URL-адреса в location {}
из файла m.shop.vhost
Это будет работать (пример)
www.shop.com.vhost
www.shop.com/index.php?route=checkout/cart
www.shop.com/checkout/cart
rewrite ^/checkout/cart?$ /index.php?route=checkout/cart last;
И это не сработает:
m.shop.com/checkout/cart - он вернет 404.
Это заставит его работать
m.shop.com.vhost
location / {
rewrite ^/checkout/cart?$ /index.php?route=checkout/cart last;
}
Вам просто нужно вручную добавить все URL-адреса SEO, которые вы хотите. Для ссылок на продукты потребуется глобальная интеллектуальная перезапись, поскольку, конечно, их нельзя вручную добавить. Если я могу что-то предложить - если это мобильный сайт, тогда вам действительно не нужны URL-адреса SEO. Пользователи вряд ли используют их для телефонов, уверенный, что пользователь с уверенностью оценит дружественные ссылки для SEO, но использование строки PHP и параметров и запросов может быть лучше для использования на телефоне - единственный недостаток - это требует передового перенаправления.
Я предполагаю, что вы хотите, чтобы это работало так, что вы можете автоматически просто изменить заголовок с www на m и m на www для телефона, так что это класс перенаправления. Если это так, я хотел бы услышать от кого-то еще кто это сделал. Мы используем NGINX на двух серверах с балансировкой нагрузки и используем Magento, OpenCart и еще один script для наших магазинов. Нам нравится, что вы являетесь одной из серьезных компаний, занимающихся транзакциями большого объема на OpenCart - у нас есть специальная команда, обрабатывающая международные заказы и языковые запросы внутри нее.