Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/263.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 使用Nginx在OpenCart上的多个商店和子域上启用SEO URL_Php_Url Rewriting_Nginx_Opencart - Fatal编程技术网

Php 使用Nginx在OpenCart上的多个商店和子域上启用SEO URL

Php 使用Nginx在OpenCart上的多个商店和子域上启用SEO URL,php,url-rewriting,nginx,opencart,Php,Url Rewriting,Nginx,Opencart,我正试图让搜索引擎优化URL在OpenCart的多个商店之间工作 我在行政区有两家商店 http://www.shop.com (default) http://m.shop.com 搜索引擎优化URL的工作 但是他们返回一个not_found.tpl(404页面)作为 然而,这是可行的: http://m.shop.com/index.php?route=product/product&path=68&product_id=52 SEO方面,应该是这样的 /index.ph

我正试图让搜索引擎优化URL在OpenCart的多个商店之间工作

我在行政区有两家商店

http://www.shop.com (default)
http://m.shop.com
搜索引擎优化URL的工作 但是他们返回一个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;
    }
}
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;
    }
}
m.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;
    }
}
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;
    }
}

OpenCart不处理多商店的SEO URL。唯一的方法是手动在m.shop.vhost的
位置{}
中添加URL

这将起作用(示例)

这是行不通的:

m、 shop.com/checkout/cart-它将返回404

这将使它起作用

m.shop.com.vhost

    location / {

    rewrite ^/checkout/cart?$ /index.php?route=checkout/cart last;

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


我的猜测是你想让它工作,这样你就可以自动将手机的头从www改为m,m改为www,这样重定向类就更容易了。。如果是这样的话,我想听听做过这件事的其他人的意见。我们在2台负载平衡的服务器上使用NGINX,并为我们公司的商店使用Magento、OpenCart和另一个脚本。我们喜欢您是在OpenCart上进行大量交易的严肃公司之一-我们有一个专门的团队处理国际订单和语言查询

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

来自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”

重新启动nginx并启用完整的友好URL

从Opencart论坛:

简短的版本是:
创建2个演示子域
subA.domain.com
subB.domain.com
并将两个子域“指向”web主机上的同一文件夹。
i、 e.公共_html/商店
将opencart安装到第一个子域,然后进行管理并添加额外的存储

因此,Shop1 subA.domain.com和Shop2 subB.domain.com都运行相同的代码


希望这是有意义的。

如果我没弄错的话,这些设置看起来完全一样。为什么不使用一个
server{…}
部分,并将
m.shop.com
添加到
server\u name
指令中?至于你的错误本身,从我的头脑中我只有一个遥远的猜测:你的
m.shop.com
配置真的处于活动状态吗?它们有时被组织在一个目录中,其中包含配置文件本身,您应该在其中放置一个符号链接。链接在那里,对吗?链接在那里。。现场工作。。该m.shop.com网站的工作,它显示了另一个OpenCart商店-搜索引擎优化网址不工作,但是。我没有经验的OpenCart,但是,我很好奇,如果你必须这样做通过nginx?如果不可以,您可以修改.htaccess文件并使用mod重写。下面是我在一家商店找到的一个例子。也许这会有帮助。
OpenCart不会处理多个商店的搜索引擎优化URL。
我想OC社区的每个人都会不同意???@TheBlackBenzKid这是有效的。。。这是如何实现这一点的基本想法!!我使用的是OPENCART而不是XenForo-100