Baza wiedzy Proste instrukcje dotyczące pracy z usługą Profitserver
Główny Baza wiedzy Konfigurowanie pliku .htaccess

Konfigurowanie pliku .htaccess


W tym artykule przyjrzymy się podstawowym zasadom korzystania z pliku .htaccess, który jest kluczowy dla poprawy SEO. Ten plik zapewnia prawidłowe indeksowanie stron przez wyszukiwarki. Dowiemy się, jak zarządzać przekierowaniami, konfigurować zabezpieczenia i zwiększać wydajność. Ponadto udzielimy wskazówek, jak samodzielnie skonfigurować ten plik.

Dlaczego .htaccess jest potrzebny

Plik .htaccess działa jako swego rodzaju „pilot zdalnego sterowania” dla twórców stron internetowych na serwerach Apache. Oferuje wygodne narzędzia do dostosowywania różnych parametrów i zarządzania zachowaniem witryny. Gdy bezpośredni dostęp do głównych plików konfiguracyjnych serwera jest niedostępny (jak to często bywa na przykład w przypadku hostingu wirtualnego), .htaccess staje się przydatnym narzędziem do wprowadzania niezbędnych zmian.

Htaccess często znajduje się w folderze głównym Twojej witryny lub w tych folderach, w których wymagana jest specjalna konfiguracja. Na przykład, jeśli używasz WordPressa, konfiguracja może zostać wykonana za pomocą wtyczki Yoast SEO, którą omówiliśmy w artykule na temat Konfigurowanie pliku robots.txtW innych przypadkach wystarczy przejść do wymaganego folderu i edytować istniejący plik .htaccess lub utworzyć go, jeśli jeszcze nie został utworzony.

Konfigurowanie pliku .htaccess

Przekierowanie 301 htaccess

Przekierowanie 301 w pliku .htaccess można porównać do stałego przekierowania na stronie internetowej. Informuje ono wyszukiwarki i przeglądarki, że strona jest teraz na stałe umieszczona pod nowym adresem i sugeruje aktualizację zakładek i indeksowanie. Takie przekierowanie jest zazwyczaj używane, gdy strona jest przenoszona lub usuwana, aby zachować jej pozycję w wynikach wyszukiwania i przekierować odwiedzających do nowej lokalizacji.

Aby aktywować przekierowania, należy włączyć odpowiednie polecenie w pliku .htaccess:

RewriteEngine on

Następnie możesz skonfigurować najprostszą formę przekierowania:

<IfModule mod_rewrite.c>
RewriteEngine On
Redirect 301 /old-page.html /new-page.html
</IfModule>

Podobne przekierowanie przy użyciu PrzekierujStały Dyrektywa wygląda następująco:

<IfModule mod_rewrite.c>
RewriteEngine On
Redirect permanent /old-page.html http://new-domain.ru/new-page.html
</IfModule>

Oto najłatwiejsze do skonfigurowania metody przekierowań. Rozważmy konfigurację, która używa innych, bardziej zaawansowanych typów przekierowań z mod_rewrite moduł:

<IfModule mod_rewrite.c>
RewriteEngine On
    
# Redirecting from one page to another
RewriteRule ^old-page.html$ http://www.example.com/new-page.html [R=301,L]

# Redirecting all traffic from one domain to another
RewriteCond %{HTTP_HOST} ^oldsite.com$ [OR]
RewriteCond %{HTTP_HOST} ^www.oldsite.com$
RewriteRule ^(.*)$ http://www.newsite.com/$1 [R=301,L]
    
# Redirecting from www to non-www (or vice versa)
RewriteCond %{HTTP_HOST} ^www.example.com$
RewriteRule ^(.*)$ http://example.com/$1 [R=301,L]

# Redirecting from HTTP to HTTPS
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://www.example.com/$1 [R=301,L]

# Redirecting from one subdomain to another
RewriteCond %{HTTP_HOST} ^subdomain1.example.com$
RewriteRule ^(.*)$ http://subdomain2.example.com/$1 [R=301,L]
</IfModule>

Przekierowanie 302 .htaccess, wskazujące na tymczasową relokację, występuje znacznie rzadziej. Oto przykład takiego ustawienia:

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule ^old-page.html$ /new-page.html [R=302,L]
</IfModule>

Dyrektywa ErrorDocument

To ustawienie pozwala kontrolować, co użytkownik widzi, gdy na Twojej stronie wystąpią błędy HTTP. Zamiast standardowego komunikatu o błędzie możesz wyświetlić własną stronę, która będzie bardziej informacyjna dla odwiedzającego i pomoże mu zrozumieć, co się stało. Po prostu postępuj zgodnie z tą składnią:

ErrorDocument <error_code> <URL_page>

Na przykład,

ErrorDocument 404 /errors/not_found.html

Oznacza to, że kiedy 404 wystąpił błąd, strona na /błędy/nie_znaleziono.html zostanie otwarty. Absolutne adresy URL są określane podobnie:

ErrorDocument 500 http://example.com/errors/server_error.html

Ten przykład pokazuje wyświetlanie błąd_serwera.html strona w http://example.com/errors/ w przypadku 500 Błąd.

Odmowa dostępu do katalogu witryny

Plik .htaccess zawiera polecenie Deny from all, co pomaga odmawiać dostępu do niektórych folderów lub plików na Twoim serwerze internetowym. Może to być przydatne, jeśli chcesz ukryć prywatne informacje lub ważne pliki przed odwiedzającymi witrynę, aby zapewnić bezpieczeństwo danych.

Aby wyłączyć listowanie (przeglądanie wszystkich dostępnych katalogów), należy dodać wiersz:

Options -Indexes

Przykład blokowania dostępu do konkretnego katalogu wygląda następująco:

<Directory /path_to_your_directory>
Order Deny,Allow
Deny from all
</Directory>

Podobnie można odmówić dostępu do pojedynczego pliku:

<Files "file.php">
Order Deny,Allow
Deny from all
</Files>

Lub dla zakresu plików według rozszerzenia:

<FilesMatch "\.(txt|log|bak)$"> # Select the desired extensions, in the example: txt, log, bak
Order Deny,Allow
Deny from all
</FilesMatch>

Blokowanie dostępu według adresu IP

Blokowanie dostępu według adresu IP w pliku .htaccess to metoda, która pozwala ograniczyć dostęp do Twojej witryny dla określonych adresów IP lub ich grup. Może to być przydatne, jeśli chcesz uniemożliwić dostęp do swojej witryny lub jej określonych części określonym osobom lub niechcianym botom.

Zablokowanie pojedynczego adresu IP wykonuje się za pomocą polecenia:

Order Deny,Allow
Allow from all
Deny from 11.22.33.44

Blokowanie kilku adresów IP odbywa się w podobny sposób poprzez powielenie „Deny from„wiersz z wymaganymi adresami.

Aby zablokować zakres adresów IP:

Order Deny,Allow
Allow from all
Deny from 11.11.11.11/24

Aby zezwolić na dostęp tylko dla określonych adresów IP, dodaj kod:

Order Deny,Allow
Deny from all
Allow from 11.22.33.44

Aby całkowicie zablokować dostęp, użyj dyrektywy Deny from alli w celu blokowania adresów według maski określ Deny from 11.22.

Gdzie, 11.22 to jest adres IP maska.

Blokowanie odwiedzających według User-Agent

Blokowanie użytkowników przez User-Agent w pliku .htaccess to metoda kontrolowania, kto może uzyskać dostęp do Twojego serwera internetowego na podstawie informacji o przeglądarce, której używa odwiedzający. Ciąg User-Agent zawiera dane o przeglądarce, której dana osoba używa do interakcji z Twoim serwerem, a dzięki tym informacjom możesz ograniczyć dostęp dla określonych użytkowników.

Najczęstszym sposobem blokowania przez User-Agent jest użycie mod_rewrite:

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{HTTP_USER_AGENT} ^Bot1 [NC,OR]
RewriteCond %{HTTP_USER_AGENT} ^Bot2 [NC,OR]
RewriteCond %{HTTP_USER_AGENT} ^Bot3 [NC]
RewriteRule ^.*$ - [F,L]
</IfModule>

W tym przykładzie:

  1. RewriteCond %{HTTP_USER_AGENT} służy do sprawdzania ciągu User-Agent.
  2. ^Bot1, ^Bot2, ^Bot3 to przykłady ciągów User-Agent, które chcemy zablokować. Modyfikatory NC wskazują, że porównanie powinno być bez względu na wielkość liter.
  3. RewriteRule ^.*$ - [F,L] dotyczy żądania, jeśli spełniony jest którykolwiek z warunków RewriteCond. Wysyła odpowiedź z kodem statusu 403 Forbidden (F) i zatrzymuje przetwarzanie reguł (L).

Buforowanie w htaccess

Konfigurowanie buforowania za pomocą pliku .htaccess pomaga przyspieszyć działanie witryny, sprawiając, że ładuje się ona szybciej dla użytkowników. Działa to w następujący sposób: niektóre pliki, takie jak obrazy, style CSS i skrypty JavaScript, są przechowywane w pamięci podręcznej przeglądarki użytkownika po pierwszym załadowaniu. Teraz przeglądarka może używać tych plików z pamięci podręcznej, zamiast ponownie ładować je z serwera za każdym razem, gdy użytkownik odwiedza stronę. Skraca to czas ładowania i poprawia wydajność witryny.

Rozważmy przykład:

# Enable caching for images for 1 month
<FilesMatch "\.(jpg|jpeg|png|gif|svg)$">
Header set Cache-Control "max-age=2592000, public"
</FilesMatch>

# Enable caching for CSS and JavaScript for 1 week
<FilesMatch "\.(css|js)$">
Header set Cache-Control "max-age=604800, public"
</FilesMatch>

Z drugiej strony, w przypadku zasobów, które są często aktualizowane, konieczne jest wyłączenie buforowania:

# Excluding caching for HTML pages and XML files
<FilesMatch "\.(html|xml)$">
Header set Cache-Control "no-cache, no-store, must-revalidate"
Header set Pragma "no-cache"
Header set Expires "0"
</FilesMatch>

Optymalizacja wydajności witryny

mod_deflate oraz mod_gzip moduły w Apache pomagają kompresować informacje, które serwer wysyła do urządzeń użytkowników. Dzięki temu pliki są mniejsze, co z kolei przyspiesza ładowanie stron. Należy jednak pamiętać, że obsługa i konfiguracja tych modułów mogą się różnić w zależności od serwera.

Przykład użycia mod_deflate moduł:

<IfModule mod_deflate.c>
# Compressing text file types
AddOutputFilterByType DEFLATE text/plain
AddOutputFilterByType DEFLATE text/html
AddOutputFilterByType DEFLATE text/xml
AddOutputFilterByType DEFLATE text/css
AddOutputFilterByType DEFLATE application/xml
AddOutputFilterByType DEFLATE application/xhtml+xml
AddOutputFilterByType DEFLATE application/rss+xml
AddOutputFilterByType DEFLATE application/javascript
AddOutputFilterByType DEFLATE application/x-javascript
AddOutputFilterByType DEFLATE application/x-httpd-php
AddOutputFilterByType DEFLATE application/x-httpd-fastphp
AddOutputFilterByType DEFLATE image/svg+xml
</IfModule>

Przykład dla mod_gzip:

<IfModule mod_gzip.c>
mod_gzip_on Yes
mod_gzip_dechunk Yes
mod_gzip_item_include file .(html?|txt|css|js|php|pl)$ # Enabling compression for files with extensions .html, .txt, .css, .js, .php, .pl
mod_gzip_item_include mime ^application/x-javascript.* # Enabling compression for MIME types starting with application/x-javascript
mod_gzip_item_include mime ^text/.* # Enabling compression for MIME types starting with text/
mod_gzip_item_exclude mime ^image/.* # Excluding from compression MIME types starting with image/
mod_gzip_item_exclude rspheader ^Content-Encoding:.*gzip.* # Excluding already compressed data (responses with the Content-Encoding: gzip header)
</IfModule>

Omówiliśmy najczęściej używane dyrektywy. Możesz zapoznać się ze wszystkimi możliwościami pliku w oficjalna dokumentacja.

Jak sprawdzić funkcjonalność pliku .htaccess

Aby sprawdzić, czy plik .htaccess działa na stronie, możesz wykonać następujące czynności:

  1. Celowo zmień plik .htaccess z błędem. W odpowiedzi serwer powinien zwrócić błąd. Ta metoda pokazuje, czy operacja pliku jest ogólnie stosowana na serwerze.
  2. Sprawdź funkcjonalność konkretnych zmian, które wprowadziłeś. Na przykład, dokonaj niewielkiej korekty jednego z parametrów i oceń obecność zmian.
  3. Sprawdź kod statusu strony, jeśli zmiany są związane z odpowiedzią serwera. Jak to zrobić, opisaliśmy wcześniej w artykule Kody błędów HTTP: kompletna lista błędów serwera.
  4. Zapoznaj się z dziennikami serwera. Wyświetlają one wszystkie błędy związane z działaniem pliku .htaccess.
  5. Przeprowadź testy za pomocą usług lub narzędzi online.

Ważne jest, aby zrozumieć, że aby sprawdzić funkcjonalność pliku .htaccess, nie musisz wykonywać wszystkich kroków na raz. Wystarczy wybrać najbardziej odpowiednią metodę z listy i jej użyć.

Wniosek

Konfigurowanie pliku .htaccess jest ważnym krokiem w optymalizacji i ochronie serwera Apache. Przyjrzeliśmy się, w jaki sposób ten plik pomaga zarządzać przekierowaniami, kompresować zawartość i zapewniać bezpieczeństwo. Po opanowaniu pracy z plikiem .htaccess zyskujesz potężne narzędzie do poprawy wydajności i funkcjonalności witryn internetowych.

❮ Poprzedni artykuł Konfiguracja serwera FTP
Następny artykuł ❯ Jak skonfigurować serwer WWW (Apache-PHP-MySQL/MariaDB) w systemie Linux

Zapytaj nas o VPS

Jesteśmy zawsze gotowi odpowiedzieć na Państwa pytania o każdej porze dnia i nocy.