11

我正在尝试让 SEO URL 在 OpenCart 中的多个商店中工作。

我在管理员中有两家商店

http://www.shop.com (default)
http://m.shop.com

SEO URL 适用于http://www.shop.com 但它们为http://m.shop.com返回 not_found.tpl(404 页面)

但是,这有效:

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。这是配置:

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;
    }
}
4

2 回答 2

8

我从某人那里得到了这篇文章和详细信息,我公司的 SEO 和营销团队正在使用这个工具。

来自XenForo 论坛上 nginx 上的设置 SEO 完全友好 URL :

其实真的很简单。

考虑到您已将 XenForo 上传到“社区”目录中,只需将其添加到您的 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 并启用完全友好的 URL。

直接的多商店设置的简单说明?在 Opencart 论坛上:

简短版本是:
创建 2 个演示子域
subA.domain.com
subB.domain.com
并将两个子域“指向”您的网络主机上的同一文件夹。
即public_html/shop
将opencart 安装到第一个子域,然后通过管理员并添加一个额外的商店。

因此,您将拥有 Shop1 subA.domain.com 和 Shop2 subB.domain.com 都运行相同的代码。

希望这是有道理的。

于 2013-05-17T10:23:21.447 回答
0

OpenCart 不处理多商店的 SEO URL。这样做的唯一方法 -在 m.shop.vhost 中手动添加 URLlocation {}

这将起作用(示例)

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;

}

您只需手动添加所需的所有 SEO URL。产品链接需要全局智能重写,因为您当然不能手动添加它们。如果我可以提出一些建议——如果这是一个移动网站——​​那么你真的不需要 SEO URL。用户几乎不将它们用于手机,当然精明的用户会喜欢友好的 SEO 链接,但使用 PHP 字符串和参数和查询可能会更好在手机上使用 - 唯一的缺点是它需要高级重定向。

我的猜测是您希望它能够正常工作,以便您可以自动将标题从 www 更改为 m 和 m 更改为 www 以便电话更容易重定向类..如果是这种情况,我想从其他人那里听到这个完毕。我们在 2 个负载平衡的服务器上使用 NGINX,并为我们的公司商店使用 Magento、OpenCart 和另一个脚本。我们喜欢您是在 OpenCart 上进行大量交易的严肃公司之一 - 我们有一个专门的团队处理其中的国际订单和语言查询。.

于 2013-05-13T08:54:19.063 回答