Budowa i najpopularniejsze wpisy pliku .htaccess


Poniższa instrukcja zawiera opis edycji pliku z poziomu Menadżera plików, natomiast treść modyfikacji pliku jest taka sama niezależnie od wybranego sposobu modyfikacji. Aby dodać wpisy do pliku .htaccess:

  • zaloguj się do panelu administracyjnego hostingu – sposoby logowania opisane są w instrukcji:
    https://cyberfolks.pl/pomoc/logowanie-sie-do-panelu-administracyjnego/
  • wybierz z listy domenę, dla której chcesz wykonać zmianę
  • sprawdź, w jakiej lokalizacji na hostingu umieszczone są pliki Twojej strony. W tym celu kliknij opcję „Przypisz katalog domeny” w sekcji „Serwer www i domeny”

Domyślna ścieżka dla lokalizacji plików strony to: /home/LOGIN/domains/NAZWADOMENY/public_html, natomiast Twoja domena może mieć tu wskazaną inną ścieżkę

  • po zweryfikowaniu ścieżki wybierz opcję „Menadżer plików” w górnym menu panelu administracyjnego:

  • przejdź do odpowiedniego katalogu, klikając na kolejne katalogi zgodnie ze ścieżką domeny. Przykładowo, dla domyślnej ścieżki
    /home/LOGIN/domains/NAZWADOMENY/public_html
    rozpocznij od katalogu domains, następnie katalog z nazwą domeny i public_html
  • wybierz opcję edycji pliku .htaccess w kolumnie „Czynność” przy pliku:

Jeśli pliku o takiej nazwie nie ma na liście plików Twojej domeny, pod listą plików w sekcji „Utwórz nowy plik” utwórz plik o nazwie „.htaccess

Plik .htaccess jest często używany na serwerach Apache do zarządzania konfiguracją witryny, przekierowaniami i różnymi innymi ustawieniami. Oto najpopularniejsze wpisy, które są często stosowane w plikach .htaccess:

1. Zmiana wersji PHP

Jeśli na serwerze działa kilka wersji PHP, można wymusić użycie konkretnej wersji:

dla PHP 5.6 dodaj: AddHandler application/x-httpd-php56 php
dla PHP 7.0 dodaj: AddHandler application/x-httpd-php70 php
dla PHP 7.1 dodaj: AddHandler application/x-httpd-php71 php
dla PHP 7.2 dodaj: AddHandler application/x-httpd-php72 php
dla PHP 7.3 dodaj: AddHandler application/x-httpd-php73 php
dla PHP 7.4 dodaj: AddHandler application/x-httpd-php74 php
dla PHP 8.0 dodaj: AddHandler application/x-httpd-php80 php
dla PHP 8.1 dodaj: AddHandler application/x-httpd-php81 php
dla PHP 8.2 dodaj: AddHandler application/x-httpd-php82 php

2a. Przekierowanie 301 (stałe przekierowanie)

Służy do przekierowania ruchu ze starego adresu URL na nowy. Przydatne np. po zmianie struktury strony.
Przykład: Przekierowanie starej strony na inną
Redirect 301 /stary-adres https://example.com/nowy-adres

2b. Przekierowanie jednej podstrony na katalog (główną stronę katalogu)

Jeśli chcesz, aby konkretna podstrona była przekierowana do katalogu (jego głównej strony), użyj:
Redirect 301 /stary-katalog/podstrona https://example.com/nowy-katalog

3. Przekierowanie z HTTP na HTTPS

Wymusza korzystanie z bezpiecznego połączenia HTTPS.
Kiedy użyć: Jeśli chcesz upewnić się, że cała strona korzysta z szyfrowanego połączenia SSL.
Przykład:
RewriteCond %{HTTP_HOST} ^mojadomena.pl [NC]
RewriteRule ^(.*)$ https://www.mojadomena.pl/$1 [R=301,L]

4. Przekierowanie na www lub bez www

Przekierowuje całą witrynę na wersję z www lub bez.
Kiedy użyć: Jeśli chcesz uniknąć duplikacji treści w Google i zapewnić jednolity adres URL.
Przykład:

  • przekierowanie na www:
    RewriteEngine On
    RewriteCond %{HTTP_HOST} ^example.com [NC]
    RewriteRule ^(.*)$ https://www.example.com/$1 [R=301,L]

  • przekierowanie na wersję bez www:
    RewriteEngine On
    RewriteCond %{HTTP_HOST} ^www.example.com [NC]
    RewriteRule ^(.*)$ https://example.com/$1 [R=301,L]

5. Blokowanie dostępu do plików i katalogów

Blokuje dostęp do określonych plików (np. .htaccess) lub katalogów.
Kiedy użyć: Jeśli chcesz zabezpieczyć pliki konfiguracyjne serwera przed podglądem.
Przykład:

<Files .htaccess>
Order Allow,Deny
Deny from all
</Files>

6. Ustawienie strony błędu 404

Definiuje własną stronę błędu, np. dla braku znalezienia zasobu.
Kiedy użyć: Jeśli chcesz dostosować komunikaty o błędzie na swojej stronie.
Przykład:

ErrorDocument 404 /404.html

7. Blokowanie dostępu na podstawie adresu IP

Blokuje dostęp dla określonych adresów IP.
Kiedy użyć: Jeśli chcesz uniemożliwić dostęp dla konkretnych adresów IP, np. dla botów lub atakujących
Przykład pozwalający na zablokowanie całego dostępu:

Order Deny,Allow
Deny from 192.168.1.1
Allow from all
Deny from 192.168.1.1
Allow from all


Szerzej opisane tutaj: https://cyberfolks.pl/pomoc/jak-blokowac-boty-wysycajace-zasoby/

8. Cache-Control (kontrola cache w przeglądarkach)

Określa czas przechowywania zasobów w pamięci cache przeglądarki.
Kiedy użyć: Jeśli chcesz przyspieszyć ładowanie strony poprzez wykorzystanie cache przeglądarki.
Przykład:

<IfModule mod_expires.c>
ExpiresActive On
ExpiresByType image/jpg "access 1 month"
ExpiresByType image/png "access 1 month"
ExpiresByType text/css "access 1 week"
ExpiresByType application/javascript "access 1 week"
</IfModule>

9. Blokowanie hotlinkowania

Zapobiega wyświetlaniu obrazów Twojej witryny na innych stronach.
Kiedy użyć: Jeśli chcesz zapobiec wykorzystywaniu Twoich zasobów (np. obrazów) przez inne strony, co może obciążać Twój serwer.
Przykład:

RewriteEngine On
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^https://(www.)?example.com [NC]
RewriteRule .(jpg|jpeg|png|gif)$ - [F]

10. Przekierowanie na plik index.php

Przekierowuje wszystkie zapytania do jednego pliku (np. dla frameworków PHP).
Kiedy użyć: Jeśli Twoja strona korzysta z systemu zarządzania treścią (CMS) lub frameworka, który obsługuje routing przez index.php.
Przykład:

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^ index.php [L]

11. Ochrona hasłem (autoryzacja)

Używa pliku .htpasswd do zabezpieczenia dostępu do katalogu.
Kiedy użyć: Jeśli chcesz ograniczyć dostęp do określonych zasobów, np. folderów Należy uprzednio utworzyć plik .htpasswd, w narzędziach wpisujemy nazwę nowego pliku, następnie klikamy przycisk Utwórz.

Następnie w pliku .htaccess możemy umieścić przykładowy wpis:
AuthType Basic
AuthName "Wyświetlany komunikat po wejściu na stronę"
AuthUserFile /ścieżka/do/.htpasswd
Require valid-user


Gdzie:
AuthName – określa jaki tekst ma się pojawić w okienku z prośbą o login i hasło
AuthUserFile – określa pełną ścieżkę do pliku z hasłami

12. +Indexes i -Indexes

Opcja Indexes w .htaccess kontroluje, czy użytkownicy mogą przeglądać zawartość katalogu, gdy nie ma w nim pliku indeksowego (index.html, index.php itp.).

  • +Indexes – Włączenie indeksowania katalogów

    Jeśli w katalogu nie ma pliku indeksowego, serwer wyświetli listę wszystkich plików w katalogu.

    Options +Indexes

  • -Indexes – Wyłączenie indeksowania katalogów (zalecane)

    Jeśli w katalogu nie ma pliku indeksowego, użytkownik zobaczy błąd 403 Forbidden zamiast listy plików.

    Options -Indexes

  • Jeśli masz katalog /downloads i nie chcesz, aby użytkownicy mogli zobaczyć wszystkie pliki w nim, dodaj do .htaccess:

    <Directory "/var/www/html/downloads">
    Options -Indexes
    </Directory>

13. Blokada botów

Kiedy użyć: Jeżeli chcesz zablokować dostęp botów np. ClaudeBot z poziomu .htacces
Przykład
:
RewriteEngine On
RewriteCond %{HTTP_USER_AGENT} ClaudeBot [NC]
RewriteRule .* - [F,L]


gdzie ClaudeBot oznacza przykładową nazwę bota, którego chcemy zablokować.

WAŻNE!: Pamiętaj że blokując pożyteczne boty, jak np. Robot Google, możesz uniemożliwić im indeksowanie Twojej strony w Internecie, na przykład w wyszukiwarkach internetowych. Przed zablokowaniem danego bota upewnij się zatem czy nie zaszkodzi to pozycji Twojej strony w Internecie.

14. Kompresja WebP

Aby serwer obsługiwał pliki WebP dla przeglądarek, które je wspierają, można użyć wpisu:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{HTTP_ACCEPT} image/webp
RewriteCond %{REQUEST_FILENAME}.webp -f
RewriteRule (.+).jpg$ $1.jpg.webp [T=image/webp]
RewriteRule (.+).png$ $1.png.webp [T=image/webp]
</IfModule>

<IfModule mod_headers.c>
Header append Vary Accept
</IfModule>

15. Blokada połączeń spoza kraju (GeoIP)

Za pomocą .htaccess możemy zablokować dostęp z konkretnego kraju
https://cyberfolks.pl/pomoc/jak-zablokowac-ruch-z-konkretnego-kraju/

16. Kompresja Gzip

Aby włączyć kompresję Gzip dla określonych typów plików:
<IfModule mod_deflate.c>
AddOutputFilterByType DEFLATE text/html text/plain text/xml text/css application/javascript application/json
</IfModule>

17. Ręczna separacja domen przez php_value open basedir

Jeśli chcesz ograniczyć dostęp PHP do określonych katalogów dla danej domeny:
<IfModule mod_php>
php_value open_basedir "/var/www/domain1:/tmp"
</IfModule>

18. Przekierowanie aplikacji na inny port

Jeśli chcesz przekierować ruch z portu 80 na inny port, np. 8080:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule ^(.*)$ http://127.0.0.1:8080/$1 [P]
</IfModule>

19. Zmiana parametrów php poprzez wpis .htaccess

Jeśli chcesz edytować parametry php np. ilość przypisanej pamięci PHP
Przykład:
php_value memory_limit 512M
php_value max_execution_time 450
php_value upload_max_filesize 512M

W ten sposób na usłudze hostingowej można zmienić również:
max_input_vars:
php_value max_input_vars 10000