2. Czym jest .htaccess ?
Plik sterujący zasadami zachowań serwera Apache
Jest odpowiednikiem web.config w IIS oraz pliku
konfiguracyjnego NGiX
Pozwala zrobić dużo więcej niżWam się wydaje
3. Co można zrobić za pomocą .htaccess
Ustawienia dostępów
Szyfrowanie katalogów
Przekierowania URL
Ustawianie czasu przechowywania
elementów witryny
Ustawianie domyślnych aplikacji dla plików o
danym rozszerzeniu
Wiele innych rzeczy
4. Ustawienia obsługi w konfiguracji
Apache
Domyślnie mechanizm obsługi .htaccess jest
włączony
Wyjątki:
AllowOverride None
AccessFileName .zabezpieczenia
5. Gdzie umieścić plik .htaccess?
Katalog główny witryny
Katalog administracyjny
Każdy katalog witryny
13. Blokowanie dostępu do strony wg
adresu IP
deny from 123.456.789.000
deny from all
deny from all
allow from 123.456.789.000
Order allow, deny
Przypadek:
order allow, deny
deny from 123.456.789
deny from 000.123.4
allow from all
14. ForceType zamiast
mod_rewrite
Jeśli mod_rewrite jest na serwerze wyłączony
Założenie: zamiast www.strona.pl/index.php chcemy wyświetlić
www.strona.pl/index
DirectoryIndex index
ForceType application/x-httpd-php
Dodatkowo:
ForceType text/html
15. Dostęp do katalogów
Używany głównie do blokowania dostępu do zasobów
przez inne witryny
Options – Indexes
Options +Indexes
Options +Indexes
IndexIgnore *gif *jpg *.png .?* g*
17. Własne strony błędów
Głównie strony błędów 4xx i 5xx
ErrorDocument 404 /errors/404.html
ErrorDocument 404 http://www.jakasstrona.pl
ErrorDocument 404 "Brak dokumentu na serwerze -
przepraszamy"
18. Metaznaki w wyrażeniach
regularnych
. – dowolny znak
^ - początek ciągu
$ - koniec ciągu
+ - znak występujący raz lub więcej
* - zero lub więcej wystąpień znaku
? – zero lub jedno wystąpienie znaku
! – negacja wyrażenia
( - rozpoczęcie grupowania
[ - rozpoczyna klasę znaków, np. [0-9]
19. Przyjazne linki
Options FollowSymLinks
RewriteEngine On
RewriteRule ^index.html$ index.php [L]
Założenie:
www.strona.pl/artykul.php?id=24
www.strona.pl/artykul-2.html
RewriteRule ^artykul-([^-]+).html$artykul.php?id=
21. Przekierowania domeny
Z www i bez www
Przekierowanie z WWW na adres bez WWW:
RewriteCond %{HTTP_HOST} ^www.strona.com [NC]
RewriteRule ^(.*)$ http://strona.com/ [R=301,L]
Przekierowanie bez WWW na WWW:
RewriteCond %{HTTP_HOST} ^strona.com [NC]
RewriteRule ^(.*)$ http://www.strona.com/ [R=301,L]
22. Przekierowania domeny
Stara strona na nową:
RewriteCond %{HTTP_HOST} ^stary_adres.com [NC, OR]
RewriteCond %{HTTP_HOST} ^www.stary_adres.com
RewriteRule ^(.*)$ http://www.nowy.com/ [R=301,L]
Sprawdzanie, czy przekierowanie nie prowadzi do katalogu
bądź pliku:
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule .* index.html [L]
28. Flagi modułu mod_rewrite
[R = kod] – pozwala na przekierowanie linku według
podanej wartości
[QSA] – powoduje dodanie na końcu całego zapytania
query string
[L] – ustanawia linijkę jako ostatnią, reguły występujące
dalej nie będą wykonywane
[NC] – ignoruje wielkość liter wpisanego adresu
[T] – ustawienie typu MIME
[F] – zwraca błąd 403
[S = liczba] – pomija określoną liczbę reguł
[N] – rozpoczyna przetwarzanie od początku
Więcej flag znajdziesz na:
http://httpd.apache.org/docs/2.2/mod/mod_rewrite.html.
29. Czasy przechowywania w pamięci
podręcznej
<IfModule mod_expires.c>
ExpiresActive on
ExpiresDefault "access plus 1 month„
ExpiresByType text/css "access plus 1 year„
ExpiresByType text/html "access plus 0 seconds„
ExpiresByType application/javascript "access plus 0 seconds"
ExpiresByType application/x-javascript "access plus 1 year"
ExpiresByType text/javascript "access plus 1 year„
ExpiresByType application/json "access plus 0 seconds„
ExpiresByType application/xml "access plus 0 seconds"
ExpiresByType text/xml "access plus 0 seconds„
ExpiresByType application/atom+xml "access plus 1 hour„
ExpiresByType image/jpeg "access plus 1 month„
ExpiresByType font/opentype "access plus 1 month"
30. Zmiana wersji PHP
W przypadku braku możliwości zmiany w
panelu hostingu
W przypadku braku obsługi php.ini
AddHandler application/x-httpd-php54 .php
31. Power .htaccess dla Joomla!
Plik dla Joomla 3.6.2
http://morphic.pl/upload/htaccess.rar
W przypadku pozostałych wersji proszę o
kontakt na kontakt@morphic.pl
Pliki z rozszerzeniem txt będą rozpoznawane jako zwykłe pliki .html
Pliki zip będą otwierane w domyślnym kliencie obsługującym archiwa zip
Pliki z rozszerzeniem txt będą rozpoznawane jako zwykłe pliki .html
Pliki zip będą otwierane w domyślnym kliencie obsługującym archiwa zip
Pliki 7z będą domyślnie otwierane w 7zip
^ i $ oznaczają początek i koniec .+\ wszystkie znaki
1. Pierwsza linia wskazuje adres, z którego nie życzymy sobie wejść na stronę. Druga wyświetla stronę z błędem 403. Używane do blokowania dostępu do grafik czy styli.
Zablokowanie danego IP
Zablokowanie dla wszystkich (np. katalogu)
Zablokowanie wszystkim, odblokowanie dostępu dla danego IP
Order definiuje kolejność wykonywania warunków
Pierwsza linia to wskazanie pliku startowego (przydaje się, gdy skasujemy rozszerzenie w pliku index.php
Druga linijka – sposób odczytywania pliku, aby index był odczytywany jako index.php konieczne jest zastosowanie znacznika dla php
Można dodać zasadę, że wszystkie pliki będą odczytywane jako html. Można tak prościej i szybciej operować przyjaznymi linkami i rozszerzeniami.
Zablokowanie dostępu do katalogu/-ów
Odblokowanie dostępu do katalogów
Odblokowanie dostępu z zablokowaniem dostępu do zdjęć, plików z nazwą rozpoczynającą się od kropki oraz litery g
Authname – nazwa zaszyfrowanego obszaru – widoczna w wyskakującym okienku logowania
Authtype i authgroupfile – pozostają bez zmian
Authuserfile – pełna ścieżka do pliku .htaccess
Require – jeśli cała strona ma być dostępna na hasło wówczas bez zmian,
Działa to wyłącznie w przypadku http, przy ftp już nie
Przekierowanie do strony błędu
Przekierowanie w przypadku błędu na inną stronę
Wyświetlenie komunikatu błędu
( - przetwarzanie ciągu znaków, jakby to był pojedynczy element
[ - np. dopasowanie do przedziału od 0 do 9
Dwie pierwsze linie aktywują mod_rewrite, trzecia powoduje, że index.html przekierowuje na index.php. Można również dodać [NC]
Standardowy link do artykulu zmieniony dla przyjazny dla przeglądarki. ([^-]+) – dowolny ciąg znaków złożony przynajmniej z jednego znaku, bez myślnika [^-], czyli wszystkie znaki oprócz myślnika. Gdyby nie było ^ to oznaczałoby to tylko myślnik.
Zapis ten bazuje na schemacie AllowOverride None
Adres artykułu posiada 4 zmienne
[NC] – nie ma znaczenia wielkość użytych liter we wpisywanym adresie
[NC] – nie ma znaczenia wielkość użytych liter we wpisywanym adresie
Czy wpisze się www.strona.pl/sub czy strona.pl/sub zawsze wyświetli się sub.strona.pl
Drugi przykład, druga linijka odpowiada za znalezienie jakiegoś znaku. Można by zastosować .* ale wpisanie www.strona.pl może powodować błąd, bo * umożliwia wpisanie znaku pustego.