potęga pliku .htaccess
TRANSCRIPT
![Page 1: Potęga pliku .htaccess](https://reader035.vdocuments.mx/reader035/viewer/2022062503/588380371a28ab22688b72c9/html5/thumbnails/1.jpg)
POTĘGA PLIKU .HTACCESS
WOJCIECH KLOCEK
Joomla Day 2016 - Gliwice
![Page 2: Potęga pliku .htaccess](https://reader035.vdocuments.mx/reader035/viewer/2022062503/588380371a28ab22688b72c9/html5/thumbnails/2.jpg)
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
![Page 3: Potęga pliku .htaccess](https://reader035.vdocuments.mx/reader035/viewer/2022062503/588380371a28ab22688b72c9/html5/thumbnails/3.jpg)
Co można zrobić za pomocą .htaccess
Ustawienia dostępówSzyfrowanie katalogówPrzekierowania URLUstawianie czasu przechowywania elementów witrynyUstawianie domyślnych aplikacji dla plików o danym rozszerzeniuWiele innych rzeczy
![Page 4: Potęga pliku .htaccess](https://reader035.vdocuments.mx/reader035/viewer/2022062503/588380371a28ab22688b72c9/html5/thumbnails/4.jpg)
Ustawienia obsługi w konfiguracji Apache
Domyślnie mechanizm obsługi .htaccess jest włączony
Wyjątki:AllowOverride NoneAccessFileName .zabezpieczenia
![Page 5: Potęga pliku .htaccess](https://reader035.vdocuments.mx/reader035/viewer/2022062503/588380371a28ab22688b72c9/html5/thumbnails/5.jpg)
Gdzie umieścić plik .htaccess?Katalog główny witrynyKatalog administracyjnyKażdy katalog witryny
![Page 6: Potęga pliku .htaccess](https://reader035.vdocuments.mx/reader035/viewer/2022062503/588380371a28ab22688b72c9/html5/thumbnails/6.jpg)
Parę przydatnych informacji
CHMOD 644#komentarzKażda linia powinna kończyć się EnteremOstatnia linia pliku powinna być pusta
![Page 7: Potęga pliku .htaccess](https://reader035.vdocuments.mx/reader035/viewer/2022062503/588380371a28ab22688b72c9/html5/thumbnails/7.jpg)
A teraz trochę przykładów praktycznego wykorzystania pliku .htaccess
![Page 8: Potęga pliku .htaccess](https://reader035.vdocuments.mx/reader035/viewer/2022062503/588380371a28ab22688b72c9/html5/thumbnails/8.jpg)
Określanie domyślnego pliku strony www
DirectoryIndex index.html index.php jakisplik.html
DirectoryIndex strona-awarii.html
![Page 9: Potęga pliku .htaccess](https://reader035.vdocuments.mx/reader035/viewer/2022062503/588380371a28ab22688b72c9/html5/thumbnails/9.jpg)
Zmiana powiązań typów plikówAddType text/html .txtAddType application/zip .zipAddType text/css .cssAddType application/x-httpd-php .phpAddType application/x-shockwave-flash .swfAddType application/pdf .pdfAddType video/x-ms-wmv .wmvAddType image/jpg .jpgAddType application/x-bittorrent .torrent
![Page 10: Potęga pliku .htaccess](https://reader035.vdocuments.mx/reader035/viewer/2022062503/588380371a28ab22688b72c9/html5/thumbnails/10.jpg)
Zmiana powiązań typów plikówWymuszenie pobrania plikuAddType application/octet-stream .pdf .gz
Szybka zmiana kodowania dokumentówAddDefaultCharset ISO-8859-2
![Page 11: Potęga pliku .htaccess](https://reader035.vdocuments.mx/reader035/viewer/2022062503/588380371a28ab22688b72c9/html5/thumbnails/11.jpg)
Typy MIME w mod_rewrite
AddType application/x-7z-compressed .7z
RewriteRule ^(.+\.php)s$ [T=application/x-httpd-php-source]
![Page 12: Potęga pliku .htaccess](https://reader035.vdocuments.mx/reader035/viewer/2022062503/588380371a28ab22688b72c9/html5/thumbnails/12.jpg)
Blokowanie dostępu do strony wg domeny oraz blokowanie botów
RewriteCond %{HTTP_REFERER} niechciany\.com [NC] RewriteRule .* - [F]
RewriteCond %{HTTP_USER_AGENT} ^[Ww]eb[Bb]andit [NC,OR]RewriteCond %{HTTP_USER_AGENT} ^Default\ Browser\ 0 [NC,OR]RewriteCond %{HTTP_USER_AGENT} ^Download\ Demon [NC,OR]RewriteCond %{HTTP_USER_AGENT} ^Bot\ mailto:craftbot\@yahoo\.com [NC,OR]RewriteCond %{HTTP_USER_AGENT} ^sitecheck\.internetseer\.com [NC,OR]
![Page 13: Potęga pliku .htaccess](https://reader035.vdocuments.mx/reader035/viewer/2022062503/588380371a28ab22688b72c9/html5/thumbnails/13.jpg)
Blokowanie dostępu do strony wg adresu IP
deny from 123.456.789.000deny 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
![Page 14: Potęga pliku .htaccess](https://reader035.vdocuments.mx/reader035/viewer/2022062503/588380371a28ab22688b72c9/html5/thumbnails/14.jpg)
ForceType zamiast mod_rewriteJeś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
![Page 15: Potęga pliku .htaccess](https://reader035.vdocuments.mx/reader035/viewer/2022062503/588380371a28ab22688b72c9/html5/thumbnails/15.jpg)
Dostęp do katalogówUżywany głównie do blokowania dostępu do zasobów przez inne witrynyOptions – Indexes
Options +Indexes
Options +Indexes IndexIgnore *gif *jpg *.png .?* g*
![Page 16: Potęga pliku .htaccess](https://reader035.vdocuments.mx/reader035/viewer/2022062503/588380371a28ab22688b72c9/html5/thumbnails/16.jpg)
Szyfrowanie katalogówhttp://www.tools.dynamicdrive.com/password/http://www.htaccesstools.com/htpasswd-generator/
Tworzymy plik .htpasswd
Zawartość: użytkownik:hasłoNp. uzytkownik1:jf05LdXAvmanY
Tworzymy .htaccessAuthName \"Strefa zaszyfrowana\" AuthType Basic AuthUserFile /home/users/nazwakonta/public_html/joomla/.htpasswd AuthGroupFile /dev/null require valid-user
![Page 17: Potęga pliku .htaccess](https://reader035.vdocuments.mx/reader035/viewer/2022062503/588380371a28ab22688b72c9/html5/thumbnails/17.jpg)
Własne strony błędówGłównie strony błędów 4xx i 5xx
ErrorDocument 404 /errors/404.htmlErrorDocument 404 http://www.jakasstrona.plErrorDocument 404 \"Brak dokumentu na serwerze - przepraszamy\"
![Page 18: Potęga pliku .htaccess](https://reader035.vdocuments.mx/reader035/viewer/2022062503/588380371a28ab22688b72c9/html5/thumbnails/18.jpg)
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]
![Page 19: Potęga pliku .htaccess](https://reader035.vdocuments.mx/reader035/viewer/2022062503/588380371a28ab22688b72c9/html5/thumbnails/19.jpg)
Przyjazne linkiOptions FollowSymLinks RewriteEngine On RewriteRule ^index\.html$ index.php [L]
Założenie:www.strona.pl/artykul.php?id=24www.strona.pl/artykul-2.html
RewriteRule ^artykul-([^-]+).html$artykul.php?id=
![Page 20: Potęga pliku .htaccess](https://reader035.vdocuments.mx/reader035/viewer/2022062503/588380371a28ab22688b72c9/html5/thumbnails/20.jpg)
Przyjazne linkiJ!RzeczywistośćAdres artykułu:strona.pl/index.php?option=com_content&task=view&id=1&Itemid=26
RewriteRule ([^-]+)/([^-]+)/([^-]+)/([^-]+)\.html$ index.php?option=&task=&id=&Itemid= [L]
RewriteRule (com_content)/(view)/([^-]+)/([^-]+)\.html$ index.php?option=&task=&id=&Itemid= [L]
Wygląd po zmianie:strona.pl/com_content/view/1/26.html
![Page 21: Potęga pliku .htaccess](https://reader035.vdocuments.mx/reader035/viewer/2022062503/588380371a28ab22688b72c9/html5/thumbnails/21.jpg)
Przekierowania domenyZ 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]
![Page 22: Potęga pliku .htaccess](https://reader035.vdocuments.mx/reader035/viewer/2022062503/588380371a28ab22688b72c9/html5/thumbnails/22.jpg)
Przekierowania domenyStara 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} !-dRewriteCond %{REQUEST_FILENAME} !-f RewriteRule .* index.html [L]
![Page 23: Potęga pliku .htaccess](https://reader035.vdocuments.mx/reader035/viewer/2022062503/588380371a28ab22688b72c9/html5/thumbnails/23.jpg)
Przekierowania ciąg dalszyPrzekierowania starych adresów podstron na nowe:
Redirect /katalog http://www.strona.pl/plik.php
Redirect 301 /kontakt-do-firmy.html /kontakt
![Page 24: Potęga pliku .htaccess](https://reader035.vdocuments.mx/reader035/viewer/2022062503/588380371a28ab22688b72c9/html5/thumbnails/24.jpg)
SubdomenyPrzekierowanie subdomeny na odpowiedni katalog bez konieczności wprowadzania zmian w panelu administracyjnym domenyRewriteCond %{HTTP_HOST} sub.strona.pl RewriteCond %{REQUEST_URI} !sub/ RewriteRule (.*) sub/ [L]Wynik: www.strona.pl/sub
W drugą stronęRewriteCond %{HTTP_HOST} www.strona.pl [NC] RewriteCond %{REQUEST_URI} sub/ RewriteRule (.*) http://www.sub.strona.pl [L]Wynik:sub.strona.pl
![Page 25: Potęga pliku .htaccess](https://reader035.vdocuments.mx/reader035/viewer/2022062503/588380371a28ab22688b72c9/html5/thumbnails/25.jpg)
SubdomenyW przypadku wielu subdomen:
RewriteCond %{HTTP_HOST} sub.strona.pl RewriteCond %{REQUEST_URI} !sub/ RewriteRule (.*) sub/ [L] RewriteCond %{HTTP_HOST} sub2.strona.pl RewriteCond %{REQUEST_URI} !sub2/ RewriteRule (.*) sub2/ [L]
![Page 26: Potęga pliku .htaccess](https://reader035.vdocuments.mx/reader035/viewer/2022062503/588380371a28ab22688b72c9/html5/thumbnails/26.jpg)
SubdomenyOstatecznie:
RewriteCond %{HTTP_HOST} !^(www\.)?strona.pl$[NC] RewriteCond %{REQUEST_URI} ^(.+)/$
RewriteRule .* http://%1.strona.pl [L]
![Page 27: Potęga pliku .htaccess](https://reader035.vdocuments.mx/reader035/viewer/2022062503/588380371a28ab22688b72c9/html5/thumbnails/27.jpg)
SubdomenyWykorzystanie wyrażeń regularnych:
RewriteCond %{HTTP_HOST} strona.pl [NC] RewriteCond %{HTTP_HOST} (.*).strona.pl [NC]
RewriteRule .* /%2%{REQUEST_URI}
I w drugą stronę:RewriteCond %{HTTP_HOST} strona.pl [NC]
RewriteCond %{REQUEST_URI} ^(.+)/$ RewriteRule .* http://%1.strona.pl [L]
![Page 28: Potęga pliku .htaccess](https://reader035.vdocuments.mx/reader035/viewer/2022062503/588380371a28ab22688b72c9/html5/thumbnails/28.jpg)
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.
![Page 29: Potęga pliku .htaccess](https://reader035.vdocuments.mx/reader035/viewer/2022062503/588380371a28ab22688b72c9/html5/thumbnails/29.jpg)
Czasy przechowywania w pamięci podręcznej
<IfModule mod_expires.c>ExpiresActive onExpiresDefault "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"
![Page 30: Potęga pliku .htaccess](https://reader035.vdocuments.mx/reader035/viewer/2022062503/588380371a28ab22688b72c9/html5/thumbnails/30.jpg)
Zmiana wersji PHPW przypadku braku możliwości zmiany w panelu hostinguW przypadku braku obsługi php.ini
AddHandler application/x-httpd-php54 .php
![Page 31: Potęga pliku .htaccess](https://reader035.vdocuments.mx/reader035/viewer/2022062503/588380371a28ab22688b72c9/html5/thumbnails/31.jpg)
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 [email protected]
![Page 32: Potęga pliku .htaccess](https://reader035.vdocuments.mx/reader035/viewer/2022062503/588380371a28ab22688b72c9/html5/thumbnails/32.jpg)
Dziękuję za uwagę