The*_*Kid 11 php nginx url-rewriting opencart
我试图让SEO URL在OpenCart中的多商店中运行.
我在管理员中有两个商店
http://www.shop.com (default)
http://m.shop.com
Run Code Online (Sandbox Code Playgroud)
SEO网址适用于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
Run Code Online (Sandbox Code Playgroud)
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)
Run Code Online (Sandbox Code Playgroud)
我正在使用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;
}
}
Run Code Online (Sandbox Code Playgroud)
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;
}
}
Run Code Online (Sandbox Code Playgroud)
我从一个人那里得到了这篇文章和细节,在我的公司SEO和营销团队正在使用这个工具..
来自XenForo论坛上nginx上的设置SEO完全友好URL:
它实际上非常简单.
考虑到您已将XenForo上传到目录"community",只需将其添加到您的nginx配置:
Run Code Online (Sandbox Code Playgroud)location /community/ { index index.php index.html index.htm; try_files $uri $uri/ /community/index.php?$uri&$args; }当你在它时,你可能还想添加它来阻止外部访问文件夹"internal_data"和"library".
Run Code Online (Sandbox Code Playgroud)location ~ ^/community/(internal_data|library)/(.*)$ { internal; }重新启动nginx并启用完整友好URL.
从直接向前轻松的多店设置说明?在Opencart论坛上:
简短版本是:
创建2个演示子域
subA.domain.com
subB.domain.com
并将两个子域"指向"Web主机上的同一文件夹.
即public_html/shop
将opencart安装到第一个子域,然后通过管理员添加一个额外的商店.因此,Shop1 subA.domain.com和Shop2 subB.domain.com都运行相同的代码.
希望有道理.
OpenCart 不处理多商店的 SEO URL。执行此操作的唯一方法 -手动location {}添加m.shop.vhost中的 URL
这会起作用(示例)
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;
Run Code Online (Sandbox Code Playgroud)
这是行不通的:
m.shop.com/checkout/cart - 它将返回 404。
这将使它发挥作用
m.shop.com.vhost
location / {
rewrite ^/checkout/cart?$ /index.php?route=checkout/cart last;
}
Run Code Online (Sandbox Code Playgroud)
您只需手动添加您想要的所有 SEO URL。产品链接需要全局智能重写,因为您当然无法手动添加它们。如果我可以建议一些东西 - 如果这是一个移动网站 - 那么你真的不需要 SEO URL.. 用户几乎不会在手机上使用它们,当然精明的用户会欣赏友好的 SEO 链接,但使用 PHP 字符串和参数和查询可能会更好在手机上使用 - 唯一的缺点是它需要高级重定向。
我的猜测是你希望它能够工作,这样你就可以自动将标题从 www 更改为 m 并将 m 更改为 www 以用于电话,以便更容易的重定向类..如果是这种情况,那么我希望听到其他拥有此功能的人的意见完毕。我们在 2 台负载平衡服务器上使用 NGINX,并为我们公司的商店使用 Magento、OpenCart 和另一个脚本。我们喜欢您是在 OpenCart 上进行大量交易的认真公司之一 - 我们有一个专门的团队处理其中的国际订单和语言查询。
| 归档时间: |
|
| 查看次数: |
3206 次 |
| 最近记录: |