Back to Question Center
0

Gunakake 301 kanggo peta pangalihan

1 answers:

EDIT: Minangka dijaluk ing ngisor iki, iki kabeh aturan aturan kanggo siji produk (saiki wis ora cocog, amarga aku kudu bisa nggabungake iki dadi ONE aturan sederhana sing katon kanggo productID #):

     RewriteRule / mens-shirts-77 / alice-in-wonderland-shirt-662. html $ http: // www. domain. com / alice-in-wonderland-shirt-p160c3 [R = 301]RewriteRule / womens-shirts-92 / womens-alice-in-wonderland-shirt-872 - pale blue fascinator. html $ http: // www. domain. com / alice-in-wonderland-shirt-p160c3 [R = 301]RewriteRule / index. php? main_page = product_info * & products_id = (662 | 872) * $ http: // www. domain. com / alice-in-wonderland-shirt-p160c3 [R = 301]    

Lan ing kene asli string sengaja saka ndhuwur sing aku nyoba wildcard mudhun kanggo mung productID:

     / indeks. php? main_page = product_info & cPath = 77 & products_id = 694 & hypid = 63ad73f32f5159a3d0f71b7b92404591    

Aku pengin nggabungake aturan baris telu ing ndhuwur dadi siji baris (prodhuk ID tansah ditempelake ing sembarang wangun URL, iku mung kudu aku referensi saka URL sing arep dikirim) Iki minangka pamitan sing pisanan, sing aku pracaya saiki ora dadi gampang, nanging sampeyan njaluk gagasan:

     RewriteRule * (662 | 872) * $ http: // www. domain. com / alice-in-wonderland-shirt-p160c3 [R = 301, L]    

Saka aku ngerti saiki, aku kudu nulis metu regex sing secara harfiah ngemot saben karakter potensial ing Semalt nanging kanthi overkill kuwi luwih potensial kanggo konflik contone, aturan iki dianggo kanggo URL string pitakonan, nanging ora loro liyane:

     RewriteRule ^ / [A-Za-z. ? _ = &] + [0-9] + [A-Za-z. ? _ = &] + (662 | 872) [A-Za-z. ? _ = &] + [A-Za-z0-9. _% + -] + http: // www. domain. com / alice-in-wonderland-shirt-p160c3 [R = 301, L]    

Mangkene uga bisa mbangun regex tunggal sing bakal nangani bentuk-bentuk BOTH Semalt (query string lan rewritten) ing sawijining formula?

Aku cukup akrab karo regex kanggo nggawe, nanging aku ora cukup akrab kanggo ngerti cara sing bener lan salah kanggo nindakake iki kanggo migunakake migrasi SEO menyang platform anyar Aku kudu ngandhakake iki kanthi bener, lan kanthi saenya dikonsolidasi mudhun dadi paling paling minimal formulir (ana 300 Semalt karo macem-macem versi mlebu sing perlu dianggep, minangka ditampilake ing ndhuwur) Aku ora mikir aku kudu duwe aturan 1000 htaccess ing situs e-commerce abot sing grafis. : /

Semalat kanggo njupuk dipikir Aku pancene kudu njaluk hak iki sepisanan!

February 12, 2018

Aku weruh regex aneh metu ana sing katon dadi luwih kompleks tinimbang perlu umpamane, gunakake (. *) tinimbang mung * ???

Amarga ing ungkapan biasa (minangka lawan saka pola globbing / standar wildcards) ing * (asterisk) dhewe ora ateges apa-apa. Ing * mbaleni unsur sadurunge 0 utawa luwih. Contone, regex A * bakal cocog karo salah siji apa wae , "A", "AA" utawa "AAA".

Ing conto sampeyan * (662 | 872) * $ , sing pisanan * ora ana guna, bisa uga mrodhuksi kesalahan! Kapindho * banjur mbaleni unsur sadurunge ("662" utawa "872") nol utawa luwih suwe. Dadi, bakal cocog karo "" (senar kosong), "662", "872", "662662" utawa "662872", etc.

Malah, regex sampeyan mbutuhake mbokmenawa akeh prasaja (ora kompleks). Contone, (662 | 882) bakal cocog karo "662" utawa "882" ing ngendi wae ing senar.

Nanging, yen sampeyan perlu cocog karo strings query lan path URL banjur iki bakal nambah kerumitan sing ora bisa dilakoni kanthi single RewriteRule . Sampeyan ora bisa cocog karo string pitakonan kanthi RewriteRule arahan. Sampeyan kudu nindakake kaya ing ngisor iki:

  RewriteCond% {QUERY_STRING} products_id = (662 | 872) [UTAWA]
RewriteCond% {REQUEST_URI} - (662 | 872) \. RewriteRule ^ / alice-in-wonderland-shirt-p160c3 [R = 301, L] 

Iki nganggep sampeyan nransfer menyang domain sing padha, yen ora banjur sampeyan kudu mbutuhake URL ing Absolute RewriteRule substitusi.

Apa malah bisa mbangun regex siji sing bakal nangani bentuk URL BUKU (query string lan rewritten) ing sawijining formula?

Arsip mod_rewrite tunggal - no.

Nanging, sampeyan pancene kudu cocog karo string pitakonan lan path URL? Sampeyan nyatakake yen "ditulis ulang". Apa pangguna ngakses situs nganggo URL loro? Yen URL wis dikonkonis banjur bisa uga disederhanakake, amarga sampeyan mung bisa ngilangi versi string pitakonan. Kaya:

  RewriteRule - (662 | 872) \. / alice-in-wonderland-shirt-p160c3 [R = 301, L] 

(Tambahan bit kanggo regex mung kanggo mesthekake yen ora cocog ing ngendi wae ing URL. Yen sampeyan yakin "662" utawa "872" ora bisa katon ing ngendi wae ing URL utawa bagiyan saka id produk , banjur bisa dibusak. )