Neobičan DLE redirect virus. Neobičan virus preusmjeravanja u DLE Preusmjeravanje za publikacije koje nemaju ID na glavnu stranicu

04.08.2021 Vijesti

Imam stranicu na motoru DataLife Engine i odlučio sam mu promijeniti profil. Ne radikalno, samo malo suzite temu. Da bih to učinio, morao sam ukloniti više od polovice sadržaja sa stranice koji nije bio vezan uz ovu temu. Počeo sam postupno čistiti stranice, zamjenjujući njihov sadržaj sa novi sadržaj. No ipak smo morali promijeniti strukturu URL-a i zbog toga se promet pojavio na ploči webmastera, a pozicije pretraživanja na uskoj temi su se smanjile. Osim toga, primijetio sam da postoje poveznice na izbrisane stranice s foruma i servisa poput otvet.mail.ru. Prilikom navigacije s ovih stranica prikazana je pogreška 404. Uz ovu tehničku činjenicu slijede i drugi negativni čimbenici - izgubljen je težina veze, smanjenje pokazatelja ponašanja i, mislim, niz drugih negativnih posljedica.

Odlučio sam to popraviti brutalnom metodom - ne dajući grešku 404 za sve izbrisane stranice, već sam preusmjerio 301 na glavnu stranicu. U CMS DLE, kako biste implementirali ovaj hack, trebate pronaći kod u datoteci /engine/modules/show.full.php:

elseif ( ! $news_found ) ( @ zaglavlje ( "HTTP/1.0 404 nije pronađeno" ) ; msgbox( $lang [ "all_err_1" ] , $lang [ "news_err_12" ] ) ; )

elseif(! $news_found) ( @header("HTTP/1.0 404 nije pronađen"); msgbox($lang["all_err_1"], $lang["news_err_12"]); )

i zamijenite ga s

// 301 preusmjeravanje na glavnu stranicu ako vijest nije pronađena/ne postoji elseif(! $news_found) ( header("HTTP/1.0 301 Moved Permanently"); header("Lokacija: ($config["http_home_url"] )"); die("Preusmjeri"); ) // 301 preusmjeravanje na glavnu stranicu ako vijest nije pronađena/ne postoji

Sada, svaki put kada ga robot za pretraživanje kontaktira, dobit će poruku da su informacije s ove stranice zauvijek prebačene na glavnu stranicu i da će sav sok poveznica koji ide na udaljene stranice biti redistribuiran na glavnu stranicu.

Posjetitelji iz obrisane stranice Jednostavno će vas preusmjeriti na glavnu stranicu i, nadajmo se, tada će odlučiti upotrijebiti pretraživanje.

Sada ću opisati otprilike istu logiku preusmjeravanja, ali ne za vijesti, već za kategorije. Otvorite datoteku /engine/engine.php i potražite kod:

if (! $category_id ) $category_id = "nije otkriveno" ;

if (!$category_id) $category_id = "nije otkriveno";

kojim zamjenjujemo

if ($config [ "allow_alt_url" ] == "yes" AND ! $category_id AND $view_template != "rss" ) ( header ("HTTP/1.0 301 Moved Permanently" ) ; header ("Lokacija: ($config[" http_home_url"]) " ) ; die ("Redirect" ) ; ) //rješavanje problema s kategorijama koje ne postoje

//rješavanje problema s kategorijama koje ne postoje if ($config["allow_alt_url"] == "yes" AND ! $category_id AND $view_template != "rss") ( header("HTTP/1.0 301 Moved Permanently") ; header("Lokacija: ($config["http_home_url"])"); die("Redirect"); ) //rješavanje problema s kategorijama koje ne postoje

Svi. Sada će isto raditi za izbrisane DLE kategorije.

Pozdrav prijatelji. Napokon je došlo vrijeme za treći dio mog mega DLE vodiča za optimizaciju.

Tek sada sam s užasom shvatio da je prethodni drugi dio vodiča objavljen prije više od šest mjeseci!

Po ustaljenoj tradiciji, govorit ćemo o, a konkretno u ovom dijelu govorit ću o nekim značajkama motora i malim, ali vrlo korisnim značajkama i hackovima koji nisu odgovarali formatu u prethodnim dijelovima.

I ovaj dio se odnosi na adrese stranica, no za razliku od drugog dijela, gdje smo se borili s duplikatima i eliminirali njihovo pojavljivanje, u ovom ćemo dijelu pogledati kako se riješiti nepostojećih stranica koje su nastale kao rezultat brisanja ili greška u adresi.

Post ažuriran 6. svibnja 2014.:
Promjene napravljene na motoru su ažurirane, dodana je podrška za nove verzije motora.
Relevantno za sljedeće DLE verzije: 7.x, 8.x, 9.x, 10.x!

Ostali dijelovi SEO vodiča:
Dio 1, Optimizacija zaglavlja Naslov
Dio 2, Borba protiv dupliciranog sadržaja -
Dio 4, Popravak za DLE verzije 9.3, 9.4, 9.5, 9.6 -

Preusmjeravanje s nepostojećih stranica paginacije na ispravne i postojeće

Trik je izmišljen doslovno danas, kada sam pronašao puno grešaka 404 na jednoj od stranica u panelu webmastera.

Uzmimo vrlo stvarnu situaciju - iz nekog ste razloga odlučili promijeniti broj vijesti prikazanih na glavnoj stranici ili stranicama kategorija. Što mi se dogodilo: redizajn web stranice; struktura stranice se potpuno promijenila; odlučeno je da se na svakoj stranici (od 7 do 10) prikaže više kratkih najava vijesti. Rezultat je bio sljedeći: mnoge stranice s greškom 404 pojavile su se na ploči webmastera. Jednostavna aritmetika, na stranici je bilo 1000 vijesti, na svakoj stranici prikazano je 7 najava, dakle samo na glavnoj stranici imamo 1000/7=142 stranice paginacije. Nakon izmjena bilo je točno 100 stranica, a 42 stranice su jednostavno nestale. A ako uzmemo drugu kategoriju, onda je tu već sto-dvije nepostojećih stranica. Loš je, ružan i nikako ne radi.

Otvorite datoteku /engine/modules/show.short.php i na samom dnu nalazimo:

} ?>

GORE dodajemo:

$all_pages_count = @ceil ( $count_all / $config [ "broj_vijesti" ] ); if ($cstart > $all_pages_count ) ( if ($all_pages_count > 1 ) ( header () ; header ( "Lokacija: " . $url_page . "/page/" . $all_pages_count . "/" ) ; die () ; ) else ( header ("HTTP/1.1 301 Moved Permanently" ) ; header ( "Lokacija: " . $url_page. "/" ) ; die () ; ) ) //preusmjeri na zadnja stranica, ako url sadrži stranicu veću od maksimalne postojeće

//preusmjeravanje na posljednju stranicu ako url navodi stranicu veću od najveće postojeće $all_pages_count = @ceil($count_all / $config["news_number"]); if ($cstart > $all_pages_count) ( if ($all_pages_count > 1) ( header("HTTP/1.1 301 Moved Permanently"); header ("Lokacija: " . $url_page . "/page/" . $all_pages_count . "/ "); die(); ) else ( header("HTTP/1.1 301 Moved Permanently"); header ("Lokacija: " . $url_page . "/"); die(); ) ) //preusmjerava na posljednju stranicu , ako url sadrži stranicu veću od maksimalne postojeće

Da malo objasnim kod: provjerava se uvjet - ako je trenutni broj stranice veći od maksimalan iznos stranice na web-mjestu (ili u kategoriji), zatim se preusmjerava na posljednju stranicu. Ako se traži stranica broj 2, a postoji samo jedna stranica, dolazi do preusmjeravanja na stranicu groba (ili početna stranica kategorije).

Jednostavan primjer: netko traži stranicu sa site.ru/page/435/, ali ova stranica ima samo 268 stranica, stoga će doći do preusmjeravanja na site.ru/page/268/.

Preusmjeravanje s nepostojećih stranica s paginacijom komentara na ispravne

Relevantnost: samo verzije DLE 8.x, 9.x. Nije relevantno za DLE 10.x, jer već implementiran u samom motoru.

Slična je situacija i s paginacijom u komentarima. Može se dogoditi da ste, primjerice, bili spamirani u komentarima, tražilice su indeksirale sve stranice s komentarima, a onda ste to primijetili i izbrisali sve komentare. Ali stranice koje je tražilica indeksirala ostat će i dalje, samo što na njima neće biti prikazani komentari, već potpuni duplikat glavne stranice s vijestima. I ovo je žalosno, to treba ispraviti!

Otvorite datoteku /engine/classes/comments.class.php i na samom dnu nalazimo:

} } ?>

GORE dodajemo:

//preusmjeravanje na posljednju stranicu komentara ako url navodi stranicu veću od maksimalne postojeće if ($this->cstart > $enpages_count) ( header("HTTP/1.1 301 Moved Permanently"); header("Lokacija: " . $url ); die(); ) //preusmjeravanje na posljednju stranicu komentara ako url navodi stranicu veću od maksimalne postojeće

Pa, sada je sve u redu, možete provjeriti.

Preusmjeravanje s veza s dodatnim znakovima ili netočnim završecima na ispravne adrese

Relevantnost: Sve verzije DLE-a. Testirano na 7.x, 8.x, 9.x, 10.x.

Prije je postojalo vrlo složeno rješenje koje je ovisilo o verziji motora. Ali otkad sam napisao ovaj post, dovoljno sam poboljšao svoje vještine za skladanje univerzalno rješenje za sve verzije DLE i općenito apsolutno za bilo koji motor ili bilo koje mjesto!

Otvorite .htaccess, koji je u korijenu i pronađite:

RewriteBase / RewriteCond %(REQUEST_FILENAME) !-f RewriteCond %(REQUEST_FILENAME) !-d RewriteCond %(REQUEST_URI) ^(.*)\.html(.+) RewriteCond %(REQUEST_URI) ^(.*)\.htm$ RewriteCond %(REQUEST_URI) ^(.*)\.ht$ RewriteCond %(REQUEST_URI) ^(.*)\.h$ RewriteCond %(REQUEST_URI) ^(.*)\.$ RewriteRule ^(.*)\.(. *) $1.html

Bez obzira na odabranu vrstu CNC-a, klikom na bilo koji "krivi" link posjetitelj će doći tamo gdje je trebao ići.

Preusmjerite s odjeljaka ili kategorija koji više ne postoje na glavnu stranicu

Relevantnost: Sve verzije DLE-a. Testirano na 7.x, 8.x, 9.x, 10.x.

Primjer iz života: odlučili ste promijeniti strukturu web stranice ili jednostavno izbrisali neke kategorije kao nepotrebne, stoga će te stranice prestati postojati, ali poveznice na njih mogu ostati negdje. Na primjer, na emofans sam jednom imao blogove za korisnike, dostupne na site.ru/blog/, i bili su podijeljeni na korisnike, poput ovog site.ru/blog/user1/, site.ru/blog /user2/ itd. Prošlo je mnogo godina otkako sam uništio te blogove kao nepotrebne, ali poveznice na njih i pogreške žive na panelu webmastera.

Ovo uređivanje također će vam omogućiti da izbjegnete pojavljivanje adresa stranica pune vijesti bez proširenja na kraju ili čak pune adrese vijesti kada cijeli dio URL-a nedostaje na kraju. Dakle, u kombinaciji s prethodnom točkom, ove će promjene pomoći da se 99% izbjegne pojavljivanje netočnih i neželjenih adresa.

Otvorite datoteku /engine/engine.php i pronađite:

if (! $category_id ) $category_id = "nije otkriveno" ;

if (!$category_id) $category_id = "nije otkriveno";

ZAMIJENITE SA:

//rješavanje problema s kategorijama koje ne postoje if (!$category_id AND $view_template != "rss") ( header("HTTP/1.0 301 Moved Permanently"); header("Lokacija: ($config["http_home_url" ] )"); die("Preusmjeri"); ) //rješavanje problema s kategorijama koje ne postoje

Preusmjeravanje za publikacije koje nemaju ID na glavnu stranicu

Relevantnost: Sve verzije DLE-a. Testirano na 7.x, 8.x, 9.x, 10.x.

Još jedna istinita priča preuzeta s mojih stranica. Na ploči webmastera postoji mnogo stranica s pogreškom 404 kao što je site.ru/category/subcat/page-name.html, ali prema pravilima to bi trebalo biti kao site.ru/category/subcat/123-page_name.html. Iskreno, još uvijek mi nije jasno kako i zašto je ID vijesti nestao i tko se na taj način pozivao na objave. Nikada nisam koristio nikakve module ili hakove koji uklanjaju njegov identifikator s URL-a, pa krivim korisnike koji su na svoje blogove "naopako" postavili poveznice na moju stranicu. Pa, dobro, ovo više nije važno, ali je važno nositi se s ovim problemom!

Samo za DLE 10.x verzije (kao i za 9.5, 9.6, 9.7 i 9.8)

Nova verzija koda, osim preusmjeravanja “problematičnih” adresa cijelih stranica s vijestima, preusmjerava i nepostojeće ili obrisane statične stranice na glavnu stranicu. To je zbog promijenjene logike u motoru. S jedne strane, to je vjerojatno dobro, jer dva problema rješavamo jednim potezom. S druge strane, motor u početku proizvodi uobičajenu pogrešku 404 - ako ste zadovoljni ovim stanjem stvari, nemojte raditi promjene opisane u ovom paragrafu.

Otvorite datoteku /engine/modules/static.php i pronađite na samom kraju:

@header("HTTP/1.0 404 nije pronađen"); $lang [ "static_page_err" ] = str_replace ( "(stranica)", $name. ".html", $lang [ "static_page_err" ] ) ; msgbox( $lang [ "all_err_1" ] , $lang [ "static_page_err" ] ) ;

@header("HTTP/1.0 404 nije pronađen"); $lang["static_page_err"] = str_replace("(stranica)", $name.".html", $lang["static_page_err"]); msgbox($lang["all_err_1"], $lang["static_page_err"]);

ZAMIJENITE SA:

// 301 preusmjeravanje na glavnu stranicu s adresa stranica s vijestima na kojima je id nestao, kao i zaglavlja nepostojećih statičnih stranica ("HTTP/1.0 301 Moved Permanently"); zaglavlje("Lokacija: ($config["http_home_url"])"); die("Preusmjeri"); // 301 preusmjeravanje na glavnu stranicu s adresa stranica s vijestima na kojima je ID nestao, kao i nepostojećih statičnih stranica

Staro rješenje. Samo za DLE verzije 7.x, 8.x, 9.0, 9.2 i 9.3

Sve adrese koje sadrže .html na kraju i ne sadrže ID bit će preusmjerene na glavnu stranicu. Postojeće i ispravne statične stranice, iako također nemaju ID u URL-u, neće biti preusmjerene, već će raditi kao i do sada.

Otvorite datoteku /engine/engine.php i pronađite:

if ($subaction == "" ) $subaction = "showfull" ; )

if ($subaction == "") $subaction = "showfull"; )

Dodajemo ISPOD:

if ( ( $config [ "allow_alt_url" ] == "yes" ) && (strpos ($_SERVER [ "REQUEST_URI" ] , ".html" ) !== false ) && ($dle_module == "main" ) ) ( zaglavlje ("HTTP/1.0 301 Trajno premješteno" ) ; zaglavlje ("Lokacija: ($config["http_home_url"]) " ) ; die ("Preusmjeri" ) ; ) // 301 preusmjeri na glavnu stranicu s adresa stranice s vijestima gdje je nestao id

// 301 preusmjeravanje na glavnu stranicu s adresa stranica s vijestima na kojima ID nedostaje if (($config["allow_alt_url"] == "yes") && (strpos($_SERVER["REQUEST_URI"], ".html ") !== false) && ($dle_module == "main")) (header("HTTP/1.0 301 Moved Permanently"); header("Lokacija: ($config["http_home_url"])"); die( "Redirect"); ) // 301 preusmjeravanje na glavnu stranicu s adresa stranica s vijestima na kojima nedostaje ID

Preusmjeravanje za obrisane ili nepostojeće vijesti na početnu stranicu

Relevantnost: Sve verzije DLE-a. Testirano na 7.x, 8.x, 9.x, 10.x.

Pa, ovo je standardna situacija i može se dogoditi na bilo kojem mjestu. Izbrisali ste neke vijesti i, naravno, pojavit će vam se greška 404. Ako niste zadovoljni s ovim, odnosno da se prikazuje greška 404, onda možete napraviti npr. 301 preusmjeravanje na glavnu stranicu stranice, što svakako postoji;)

Otvorite datoteku /engine/modules/show.full.php i pronađite:

elseif ( ! $news_found ) ( @ zaglavlje ( "HTTP/1.0 404 nije pronađeno" ) ; msgbox( $lang [ "all_err_1" ] , $lang [ "news_err_12" ] ) ; )

elseif(! $news_found) ( @header("HTTP/1.0 404 nije pronađen"); msgbox($lang["all_err_1"], $lang["news_err_12"]); )

ZAMIJENITE SA:

// 301 preusmjeravanje na glavnu stranicu ako vijest nije pronađena/ne postoji elseif(! $news_found) ( header("HTTP/1.0 301 Moved Permanently"); header("Lokacija: ($config["http_home_url"] )"); die("Preusmjeri"); ) // 301 preusmjeravanje na glavnu stranicu ako vijest nije pronađena/ne postoji

Sada, kada odete na nepostojeću ili izbrisanu publikaciju, bit ćete preusmjereni na glavnu stranicu web mjesta.

Općenito, ljudi, imam zasebnu, vrlo veliku objavu o .
Preporučam da se upoznate s njim, bez obzira radite li samo s DLE-om ili nekim drugim CMS-om.

Zabranjujemo indeksiranje odjeljaka web stranice pomoću metaoznake robots

Relevantnost: Sve verzije DLE-a. Testirano na 7.x, 8.x, 9.x, 10.x.

Dakle, zapamtite, nedavno sam objavio post o , gdje sam rekao da nije teško zatvoriti stranice od indeksiranja pomoću robots.txt, već ih zatvoriti pomoću . Toplo preporučam čitanje ovog posta.

Ako se ne osjećate sigurni, toplo preporučam da ga koristite! S modulom nećete nigdje pogriješiti i nećete morati raditi nikakve promjene nakon svakog ažuriranja motora.

Otvorite već omiljenu datoteku /engine/engine.php, pronađite beskorisnu liniju i izbrišite je:

if ($config["allow_rss"]) $metaoznake .=