Težava s 301 redirecti
 
Fukomuko 7. feb 2014 00:22:42 Pridružen od:
14. nov 2013
47 objav
4 5 0
#1

Preusmeriti želim staro spletno trgovino, ki se nahaja na www.staradomena.com na novo spletno trgovino, ki se nahaja na www.novadomena.com, vendar mi nikakor ne uspe doseči želenega rezultata, saj sta osnovani na popolnoma različnih sistemih in so zato tudi URL-ji posledično povsem drugačni.



Naj podam primer za preusmeritev enega artikla:


http://www.staradomena.com/izdelki.php?cat1=prva_kategorija&kat=podkategorija_ena&art=primer_artikla
----->
http://www.novadomena.com/primer_artikla

Podobno bi moral narediti za večino ostalih artiklov, vendar ne za popolnoma vse. Preostanek, ki ne bi bil točno definiran, bi se moral preusmeriti na


http://www.novadomena.com/index.php?route=domov

Po dolgotrajnem Googlanju mi je končno uspelo najti kodo, ki je kompatibilna tudi s posebnimi znaki iz stare spletne trgovine in dejansko deluje:


RewriteCond %{QUERY_STRING} ^cat1=prva_kategorija&kat=podkategorija_ena&art=primer_artikla$
RewriteRule ^izdelki.php$ http://www.novadomena.com/primer_artikla [R=301,L]

Vse lepo in prav, vendar ko želim preusmeriti preostanek povezav, ki niso definirane z zgornjim pravilom, zadeva ne deluje več tako, kot bi morala:


RewriteCond %{HTTP_HOST} ^staradomena\.com$ [OR]
RewriteCond %{HTTP_HOST} ^www\.staradomena\.com$
RewriteRule ^izdelki\.php$ "http\:\/\/www\.novadomena\.com\/" [R=301,L]

Po preusmeritvi namreč dobim takle URL:


http://www.novadomena.com/primer_artikla?cat1=prva_kategorija&kat=podkategorija_ena&art=primer_artikla

Pozna morda kdo kakšno rešitev?


všeč(0) ni všeč(0) spam(0)
 
SlimDeluxe 7. feb 2014 20:46:54 Pridružen od:
29. apr 2010
1223 objav
1022 144 9
#2

S tem "primer_artikla" si me čisto zmedel, skopiraj še celotno nespremenjeno kodo (samo domeno spremeni)



Drugače mi deluje kot da bi imel QSA (query string append) direktivo, vendar je iz te kode ne vidim.


všeč(0) ni všeč(0) spam(0)
Freelance Web Developer
 
Fukomuko 7. feb 2014 21:33:51 Pridružen od:
14. nov 2013
47 objav
4 5 0
#3

Namesto "primer_artikla" je sicer ime artikla, recimo:


http://www.staradomena.com/izdelki.php?cat1=cokolade&kat=mlecne_cokolade&art=milka_100g

ali


http://www.staradomena.com/izdelki.php?cat1=hrana&kat=cokoladne_ploscice&art=snickers_60g

Na novi spletni trgovini (Opencart) so pa URL-ji SEO, torej:


http://www.novadomena.com/milka_100g

ali


http://www.novadomena.com/snickers_60g

Je zdaj bolj razumljivo ali še kaj obrazložim?


všeč(0) ni všeč(0) spam(0)
 
Frajder 7. feb 2014 21:43:36 Pridružen od:
26. avg 2010
241 objav
203 109 2
#4

Lahko narediš tako:

http://www.staradomena.com/izdelki.php?cat1=cokolade&kat=mlecnecokolade&art=milka100g

--> http://www.novadomena.com/izdelki/cokolade/mlecnecokolade/milka100g



v .htaccess pa napišeš:



Options +FollowSymlinks

RewriteEngine on

RewriteRule ^izdelki/([^/]+)/([^/]+)/([^/]+).html /izdelki.php?cat1=$1&kat=$2&art=$3 [NC]



Pri tem pa moraš paziti na duble content tako moraš odstraniti ali spremeniti vsebino, ki jo prikazuješ na novi domeni.


všeč(1) ni všeč(0) spam(0)
 
Fukomuko 7. feb 2014 22:15:10 Pridružen od:
14. nov 2013
47 objav
4 5 0
#5

V novi spletni trgovini so povezave kar takšne, kot sem napisal v zgornjem primeru, torej:

http://www.novadomena.com/milka_100g



Sem pa podal le en primer povezave za specifičen artikel, moram še poudariti, da niso vse povezave takšne, saj niso vse SEO. Recimo primer za preusmeritev ene kategorije s čokoladami:



http://www.staradomena.com/izdelki.php?cat1=hrana&kat=cokolade

------>

http://www.novadomena.com/index.php?route=product/category&path=19


všeč(0) ni všeč(0) spam(0)
 
SlimDeluxe 7. feb 2014 23:05:04 Pridružen od:
29. apr 2010
1223 objav
1022 144 9
#6

Ker je tukaj [L]

RewriteRule ^izdelki.php$ http://www.novadomena.com/primerartikla [R=301,L]

Bi se zadeva morala končati tukaj in vse naslednje direktive ne morejo imeti vpliva.

Kako točno te sedaj moti tista zadeva na koncu (splošni rewrite) ne vem, za odstranjevanje query parametrov pa se uporablja ? na koncu

RewriteRule ^izdelki.php$ http://www.novadomena.com/primer
artikla? [R=301,L]

Če nimam celotne kode pred sabo ne dojemam lih 100%, ampak se mi zdi da ti 2x redirecta (to lahko opaziš tudi v dev toolsu, če daš persist across requets).


všeč(1) ni všeč(0) spam(0)
Freelance Web Developer
 
Fukomuko 9. feb 2014 13:30:01 Pridružen od:
14. nov 2013
47 objav
4 5 0
#7

SlimDexlue, motilo me je zato, ker artikli enostavno niso bili redirectani na pravi URL. Z "?" na koncu pa sedaj res deluje tako, kot sem si želel, vsaj na prvi pogled, tako da hvala. Upam, da bo ta trik deloval tudi pri ostalih povezavah.

Kje pa vklopim ta persist across requests? Se da še na kak način preverit, da bo takšna preusmeritev Googlu zagotovo všeč?

Preusmeritev sem preveril tudi s petimi redirect checkerji in povsod zgleda v redu.


všeč(1) ni všeč(0) spam(0)
 
SlimDeluxe 9. feb 2014 13:52:13 Pridružen od:
29. apr 2010
1223 objav
1022 144 9
#8

V Chromu, v zavihku Network je prvi gumb ena bunka "Preserve log upon navigation" in še v filtru omejiš na Documents, da bo bolj jasno.


všeč(1) ni všeč(0) spam(0)
Freelance Web Developer
 
Fukomuko 9. feb 2014 14:34:13 Pridružen od:
14. nov 2013
47 objav
4 5 0
#9

Hvala, bom preizkusil in javim. Med tem pa sem opazil, da imajo na stari spletni trgovini artikli podvojene URL-je, če so dodani v različne kategorije, tudi Google jih je zelo čudno poindeksiral (dejansko s povezavo na "dodaj v košarico"), zato bi bilo bolje, da bi zaobjel vse hkrati, in sicer tako, da bi jih preusmeril glede na parameter "art=".



Torej, če si pogledava en primer:

http://www.staradomena.com/izdelki.php?cat1=cokolade&kat=mlecnecokolade&art=milka100g

----->

http://www.novadomena.com/milka_100g



Želel bi, da se preusmerijo vse povezave iz www.staradomena.com, ki vsebujejo "art=milka100g", na http://www.novadomena.com/milka100g

Kako bi to najlažje storil?


všeč(0) ni všeč(0) spam(0)
 
SlimDeluxe 9. feb 2014 17:11:07 Pridružen od:
29. apr 2010
1223 objav
1022 144 9
#10

Če dobro vidim ti kategorije sploh ne uporabiš nikjer, zato bi rekel da kar takole...


RewriteCond %{QUERY_STRING} &art=(.*)$
RewriteRule ^izdelki.php$ http://www.novadomena.com/$1 [R=301,L]
všeč(1) ni všeč(0) spam(0)
Freelance Web Developer
 
 

🔒 Za odgovor na to temo se moraš prijaviti.

Prijavi se