2013-05-07 32 views
11

Tôi đang cố gắng truy cập URL SEO hoạt động trên nhiều cửa hàng trong OpenCart.Bật URL SEO trên nhiều cửa hàng và tên miền phụ trên OpenCart bằng Nginx

Tôi có hai cửa hàng trong admin

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

URL SEO làm việc cho http://www.shop.com Nhưng họ trả về một not_found.tpl (404 trang) cho http://m.shop.com

Tuy nhiên điều này hoạt động:

http://m.shop.com/index.php?route=product/product&path=68&product_id=52 

SEO khôn ngoan, cần là

/index.php?route=product/product&path=68&product_id=52 

http://www.shop.com/product-title 
http://m.shop.com/product-title (404 returned) 

Tôi đang sử dụng NGINX. Đây là cấu hình:

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

Nếu tôi không nhầm, các thiết lập này trông giống hệt nhau. Tại sao bạn không chỉ sử dụng một phần 'server {...}' và thêm 'm.shop.com' vào chỉ thị' server_name'? Đối với lỗi của bạn chính nó, từ đỉnh đầu của tôi, tôi chỉ có một dự đoán xa: cấu hình 'm.shop.com' của bạn có thực sự hoạt động không? Đôi khi chúng được tổ chức trong một thư mục với các tập tin cấu hình, và một nơi mà bạn có nghĩa vụ phải đặt một liên kết tượng trưng cho nó. Liên kết ở đó, đúng không? – Carsten

+0

Liên kết ở đó .. trang web hoạt động .. trang web m.shop.com hoạt động và nó hiển thị cửa hàng OpenCart khác - các URL SEO không hoạt động. – TheBlackBenzKid

+0

Tôi không có kinh nghiệm với Open Cart, tuy nhiên, tôi tò mò nếu bạn phải làm điều này thông qua nginx? Nếu không, bạn không thể sửa đổi tập tin .htaccess và sử dụng mod viết lại. Dưới đây là một ví dụ tôi tìm thấy với một cửa hàng duy nhất [Ví dụ] (http://www.templatemonster.com/help/files/OpenCart/opencart_seo_urls.htm). Có lẽ nó sẽ hữu ích. – Dropzilla

Trả lời

0

OpenCart không xử lý URL SEO cho nhiều cửa hàng. Cách duy nhất để làm điều này - tay thêm các URL trong location {} của m.shop.vhost

này sẽ làm việc (ví dụ)

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; 

Và điều này sẽ không làm việc:

m.shop.com/checkout/cart - nó sẽ trả về 404.

Điều này sẽ làm cho nó hoạt động

m.shop.com.vhost 

    location/{ 

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

} 

Bạn chỉ cần thêm thủ công tất cả URL SEO bạn muốn. Việc viết lại thông minh toàn cầu sẽ cần thiết cho các liên kết sản phẩm vì tất nhiên bạn không thể thêm chúng theo cách thủ công. Nếu tôi có thể gợi ý điều gì đó - nếu bạn không cần URL SEO thì người dùng hầu như không sử dụng chúng cho điện thoại, chắc chắn người dùng sẽ đánh giá cao các liên kết SEO thân thiện nhưng sử dụng chuỗi PHP và tham số và truy vấn có thể tốt hơn để sử dụng trên điện thoại - nhược điểm duy nhất là nó yêu cầu chuyển hướng nâng cao.

Đoán của tôi là bạn muốn điều này hoạt động để bạn có thể tự động thay đổi tiêu đề từ www sang m và m thành www cho điện thoại để dễ dàng chuyển hướng hơn .. nếu đó là trường hợp tôi muốn nghe từ ai đó người khác đã làm điều này. Chúng tôi sử dụng NGINX trên 2 máy chủ cân bằng tải và sử dụng Magento, OpenCart và một tập lệnh khác cho các cửa hàng của công ty chúng tôi. Chúng tôi thích bạn là một trong những công ty nghiêm túc thực hiện các giao dịch khối lượng lớn trên OpenCart - chúng tôi có một nhóm chuyên trách xử lý các đơn đặt hàng quốc tế và các truy vấn ngôn ngữ bên trong ..

+1

'OpenCart không xử lý URL SEO cho nhiều cửa hàng.' Tôi nghĩ mọi người trong cộng đồng OC sẽ không đồng ý? – TheBlackBenzKid

8

Tôi nhận được bài viết này và chi tiết từ ai đó, trong SEO công ty của tôi và đội ngũ tiếp thị đang sử dụng công cụ này ..

Từ Setup SEO Full Friendly URLs on nginx trên các diễn đàn XenForo:

Nó thực sự thực sự thực sự đơn giản.

Xét bạn đã tải lên XenForo vào thư mục "cộng đồng", chỉ cần thêm này để cấu hình nginx của bạn:

location /community/ { 
      index index.php index.html index.htm; 
      try_files $uri $uri/ /community/index.php?$uri&$args; 
     } 

Trong khi bạn đang ở đó bạn cũng có thể muốn thêm này để chặn truy cập bên ngoài để các thư mục "internal_data" và "library".

location ~ ^/community/(internal_data|library)/(.*)$ { 
      internal; 
     } 

Khởi động lại nginx và bật URL đầy đủ.

Từ Straight Forward Easy Instructions for Multi-Store Setup? trên các diễn đàn Opencart:

Phiên bản ngắn gọn là:
tạo 2 bản demo tiểu lĩnh vực
subA.domain.com
subB.domain.com
và "điểm "cả hai tên miền phụ vào cùng một thư mục trên máy chủ lưu trữ web của bạn.
tức là public_html/shop
Cài đặt opencart vào miền phụ đầu tiên và sau đó đi qua quản trị viên và thêm cửa hàng phụ.

Vì vậy, bạn sẽ có Shop1 subA.domain.com và Shop2 subB.domain.com cả hai đều chạy cùng một mã.

Hy vọng điều đó có ý nghĩa.

+0

@ TheBlackBenzKid Công trình này ... đó là một ý tưởng cơ bản làm thế nào để thực hiện điều này !! –

+0

TÔI ĐANG SỬ DỤNG OPENCART KHÔNG XenForo -100 – TheBlackBenzKid

Các vấn đề liên quan