2013-05-07 20 views
11

Próbuję uzyskać adresy URL SEO działające w wielu sklepach w OpenCart.Włącz adresy URL SEO w wielu sklepach i subdomenach na OpenCart przy użyciu Nginx

Mam dwa sklepy w admin

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

URL SEO pracować dla http://www.shop.com Ale oni zwracają not_found.tpl (strona 404) dla http://m.shop.com

Działa to jednak:

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

SEO mądre, powinno być

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

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

Używam NGINX. To jest 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

Jeśli się nie mylę, te ustawienia wyglądają dokładnie tak samo. Dlaczego po prostu nie skorzystasz z jednej sekcji 'server {...}' i dodasz 'm.shop.com' do dyrektywy' server_name'? Co do samego błędu, z góry mojej głowy mam tylko dalekie spekulacje: czy twoja konfiguracja 'm.shop.com' jest naprawdę aktywna? Czasami są zorganizowane w jednym katalogu z plikami konfiguracyjnymi, a tam, gdzie ma się umieścić dowiązanie symboliczne. Link jest tam, prawda? – Carsten

+0

Link jest tam .. strona działa .. strona m.shop.com działa i pokazuje inny sklep OpenCart - adresy URL SEO nie działają jednak. – TheBlackBenzKid

+0

Nie mam doświadczenia z Open Cartem, jednak jestem ciekawy, czy musisz to zrobić poprzez nginx? Jeśli nie, po prostu zmodyfikuj plik .htaccess i użyj przeróbki mod. Oto przykład, który znalazłem w jednym sklepie [Przykład] (http://www.templatemonster.com/help/files/OpenCart/opencart_seo_urls.htm). Może to będzie pomocne. – Dropzilla

Odpowiedz

0

OpenCart nie obsługuje adresy URL SEO dla multi-sklepach. Jedynym sposobem, aby to zrobić - ręcznie dodać adresy URL w location {} z m.shop.vhost

To będzie działać (przykład)

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; 

I to nie będzie działać:

m.shop.com/checkout/cart - powróci 404.

to pozwoli pracować

m.shop.com.vhost 

    location/{ 

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

} 

Trzeba tylko ręcznie dodać wszystkie adresy URL, które chcesz. Globalny inteligentny ponowny zapis byłby wymagany w przypadku linków do produktów, ponieważ nie można ich ręcznie dodawać. Jeśli mogę zasugerować coś - jeśli jest to strona mobilna - to nie potrzebujesz adresów URL SEO naprawdę ... użytkownicy rzadko używają ich dla telefonów, na pewno savy użytkownik doceniłby przyjazne linki SEO, ale użycie ciągu PHP i parametrów i zapytań może być lepsze używać telefonu - jedynym minusem jest to, że wymaga zaawansowanego przekierowania.

Zgaduję, że chcesz, żeby to działało, abyś mógł automatycznie zmienić nagłówek z www na m na m na www, aby telefon był łatwiejszy do przekierowania. Jeśli tak, to chciałbym usłyszeć od kogoś jeszcze kto to zrobił. Używamy NGINX na 2 obciążonych serwerach zbalansowanych i korzystamy z Magento, OpenCart i innego skryptu dla naszych sklepów firmowych. Podoba nam się, że jesteś jedną z poważnych firm wykonujących transakcje o dużej wartości na OpenCart - mamy dedykowany zespół obsługujący międzynarodowe zamówienia i zapytania językowe w nim zawarte.

+1

'OpenCart nie obsługuje adresów URL SEO dla wielu sklepów. Myślę, że wszyscy w społeczności OC będą się nie zgadzać ?? – TheBlackBenzKid

8

Mam ten artykuł i dane od kogoś, w mojej firmie SEO i Zespół marketingu są za pomocą tego narzędzia ..

Od Setup SEO Full Friendly URLs on nginx na forach XenForo:

to faktycznie naprawdę bardzo proste.

Zważywszy przesłaniu XenForo do katalogu „Wspólnota”, wystarczy dodać to do nginx config:

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

Podczas gdy jesteś na to można również dodać to do blokowania zewnętrznego dostępu do folderów "internal_data" i "library".

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

nginx Restart i umożliwiają pełne przyjaznych adresów URL.

Od Straight Forward Easy Instructions for Multi-Store Setup? na forach OpenCart:

Wersja krótka brzmi:
utworzyć 2 demo sub domen
subA.domain.com
subB.domain.com
i „punkt "obie subdomeny do tego samego folderu na hoście internetowym.
tj. Public_html/shop
Zainstaluj opencart do pierwszej poddomeny, a następnie przejdź przez admin i dodaj dodatkowy sklep.

Więc masz Shop1 subA.domain.com i Shop2 subB.domain.com oba uruchamiają ten sam kod.

Mam nadzieję, że ma sens.

+0

@ TheBlackBenzKid To działa ... to jest podstawowy pomysł, jak zaimplementować to !! –

+0

Używam OPENCART NOT XenForo -100 – TheBlackBenzKid