Mam w swojej witrynie wiele stron, do których dostęp mają tylko administratorzy, jeśli podana jest wartość zapytania, jeśli zostanie znaleziona i ustawiona poprawnie. Na przykład:
http://www.mydomain.com/show-daily-statistics?key=abc
Powyższy link pokaże zawartość strony, ale nic innego, jak na przykład poniżej, nie:
http://www.mydomain.com/show-daily-statistics
Teraz zastanawiałem się, co zrobić, jeśli wyszukiwarki i / lub użytkownicy niebędący administratorami w jakiś sposób wylądują na tych ukrytych stronach.
Mogę oczywiście zmienić kod strony na 404 lub przekierować 301 na:
http://www.mydomain.com/404-error
Jakie jest najlepsze rozwiązanie w odniesieniu do Google i SEO?
301-redirect
404
WPRookie82
źródło
źródło
Odpowiedzi:
Poprawny kod to 401 Brak autoryzacji
Zgodnie ze specyfikacjami HTTP
10.4.2 401 Niedozwolone
lub alternatywnie
10.4.4 403 Zabronione
Oba są semantycznie bardziej poprawne niż
404
. Zasób istnieje, więc404
nie jest „poprawny”.401
powinien być poprawny, ale nie wymaga uwierzytelnienia. Bezpieczeństwo przez zaciemnienie nie jest bezpieczeństwem.403
jest również poprawne, ponieważ żądanie jest zrozumiane, zasób istnieje, po prostu odmawia obsługi żądania.404
jest odpowiedni, jeśli nie chcesz ujawniać, dlaczego403
tak się dzieje.W każdym razie
301
przekierowania nie są odpowiednie, zasób nie został przeniesiony.źródło
Ponieważ jest to strona dla administratorów, z parametrem „klucz” lub bez niego, strony nie mogą i nie powinny być indeksowane. Dlatego strona internetowa dla administratora może wysłać kod stanu 404 i możesz pozostawić ten sam adres URL nienaruszony. Nie przekierowuj, ponieważ poinformujesz Google, że strona została przeniesiona, ale następnie na stronę, która nie istnieje.
Tak też robi Google. Zobacz, co się stanie, gdy przejdziesz na fikcyjną stronę: http://www.google.com/analytics/asdsas
źródło
http://www.example.com/404-error
Istnieje jedna mała poprawka do mojego powyższego postu, jest to rodzaj globalnej strony 404 całej witryny, więc nie przekierowałem na stronę, która nie wychodzi.Semantycznie poprawny kod odpowiedzi HTTP dla tej sytuacji to 403 Zabronione :
(Chociaż definicja odpowiedzi 403 mówi, że „autoryzacja nie pomoże”, IMO należy rozumieć jako odnoszące się konkretnie do uwierzytelniania HTTP Basic / Digest , dla którego zamiast tego należy użyć kodu stanu 401 Nieautoryzowany . Ponieważ nie używasz jedną z tych metod uwierzytelniania, 403 jest odpowiednim kodem stanu w twoim przypadku).
Jednak przy użyciu kodu 403 ujawnia stanu (lub przynajmniej zdecydowanie wskazuje) fakt, że nie jest strona z tego adresu URL, nawet jeśli serwer odmawia go dostarczyć. Ponieważ jest to coś, co możesz ukryć przed potencjalnymi intruzami, standard HTTP / 1.1 wyraźnie zezwala zamiast tego na zwrócenie kodu stanu 404 Nie znaleziono ( moje wyróżnienie):
Oczywiście, aby takie ukrywanie było w ogóle skuteczne, zwracana strona błędu 404 musi wyglądać identycznie jak zwracana w przypadku faktycznie nieistniejących stron. W przeciwnym razie oszukuje tylko najgłupszych i najbardziej przypadkowych napastników. (Jeśli Twoim celem jest po prostu utrzymanie stron poza indeksem Google, odpowiedź 403 również to zrobi).
Co z innymi możliwymi odpowiedziami sugerowanymi w twoim pytaniu i innymi odpowiedziami?
Jak zauważyłem wcześniej, nie sądzę, aby odpowiedź 401 była tutaj odpowiednia. To może działać w praktyce, o ile większość przeglądarek i wyszukiwarek będzie traktować każdą nieprawidłowy lub nierozpoznany 4 xx kod odpowiedzi seria jakby to było 404, ale wciąż nie jest ważne zgodnie z HTTP Spec, a tam nie ma praktycznego powodu, aby go preferują ponad 403 lub 404.
Jeśli chodzi o używanie przekierowania 301 (lub 302) na osobną stronę „błąd 404”, jest to okropna praktyka rozpowszechniana przez niechlujne samouczki mod_rewrite i nie ma absolutnie żadnych funkcji wykupujących w porównaniu do bezpośredniego zwracania odpowiedzi 404:
Jest to mylące dla odwiedzających, ponieważ adres URL, który próbowali odwiedzić, zostaje zastąpiony adresem URL strony błędu. Zatem widzą komunikat, że już osiągnął nieistniejącą stronę, ale nie łatwo widoczne wskazanie co strona starali się wizyty było, a więc nie można łatwo próbować żadnych strategii odzyskiwania jak mocowania żadnych oczywistych literówki w adresie URL, lub skopiuj i wklej go do Google lub Wayback Machine.
Może to mylić wyszukiwarki, szczególnie jeśli Twoja strona 404 jest niedozwolona w pliku robots.txt lub jeśli nieprawidłowo zwraca odpowiedź 200 OK zamiast prawdziwego kodu stanu 404 ( „miękki 404” ), potencjalnie powodując wyświetlenie strony 404 podczas wyszukiwania wyniki dla losowych wyszukiwanych haseł.
Powoduje to (niewielką ilość) dodatkowego obciążenia serwerów, wydłuża czas reakcji odwiedzających i potencjalnie spowalnia wyszukiwarki indeksujące Twoją witrynę, ponieważ każde żądanie nieistniejącej (lub ukrytej) strony wymaga teraz dodatkowej rundy HTTP wyjazd.
Nie przynosi to korzyści SEO, ponieważ i tak traci się „sok z linków” ze stron przekierowanych na stronę 404.
(Oczywiście, jedna sytuacja, gdzie zrobić chcesz użyć przekierowania 301 zamiast odpowiedzi 404 jest, gdy strona rzeczywiście został przeniesiony i można przekierować użytkownika do prawidłowej lokalizacji. Ale to nie jest przypadek omawiany tutaj).
Na koniec chciałbym powtórzyć zdanie wyrażone w wielu komentarzach tutaj, że zwykłe „ukrywanie” takich stron administracyjnych nie jest odpowiednim substytutem dla prawidłowego uwierzytelniania opartego na haśle . To powiedziawszy, jeśli masz już skonfigurowany bezpieczny system uwierzytelniania, ukrywanie stron może być przydatne jako dodatkowa warstwa, choć dość słaba, w podejściu do obrony .
źródło
Użyłbym
noindex,nofollow,noarchive
tagu w nagłówku stron, które chcesz wyjść z wyszukiwania.Przekonałem się, że
noarchive
tag ma cholernie szybkie wyjście z wyszukiwania, podczas gdynoindex
może przestać go wyszukiwać, ale jeśli już tam jest, musisz go usunąć z wyników wyszukiwania.Jeśli chodzi o pytanie dostępu administratora, inni faceci tutaj udzielili już porad dotyczących bezpieczeństwa, które poleciłbym sprawdzić.
źródło