Potęga pliku .htaccess

32
POTĘGA PLIKU .HTACCESS WOJCIECH KLOCEK Joomla Day 2016 - Gliwice

Transcript of Potęga pliku .htaccess

Page 1: Potęga pliku .htaccess

POTĘGA PLIKU .HTACCESS

WOJCIECH KLOCEK

Joomla Day 2016 - Gliwice

Page 2: Potęga pliku .htaccess

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

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

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

Gdzie umieścić plik .htaccess?Katalog główny witrynyKatalog administracyjnyKażdy katalog witryny

Page 6: Potęga pliku .htaccess

Parę przydatnych informacji

CHMOD 644#komentarzKażda linia powinna kończyć się EnteremOstatnia linia pliku powinna być pusta

Page 7: Potęga pliku .htaccess

A teraz trochę przykładów praktycznego wykorzystania pliku .htaccess

Page 8: Potęga pliku .htaccess

Określanie domyślnego pliku strony www

DirectoryIndex index.html index.php jakisplik.html

DirectoryIndex strona-awarii.html

Page 9: Potęga pliku .htaccess

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

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

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

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

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

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

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

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

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

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

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

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

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]

Morphic
Dlatego aby podpaść Google (a zwracają na to dużą uwagę) w związku z duplikacją treści warto zdecydować się na jedną z form adresu, a drugą przekierować.
Page 22: Potęga pliku .htaccess

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]

Morphic
Dlatego aby podpaść Google (a zwracają na to dużą uwagę) w związku z duplikacją treści warto zdecydować się na jedną z form adresu, a drugą przekierować.
Page 23: Potęga pliku .htaccess

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

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

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

SubdomenyOstatecznie:

RewriteCond %{HTTP_HOST} !^(www\.)?strona.pl$[NC] RewriteCond %{REQUEST_URI} ^(.+)/$

RewriteRule .* http://%1.strona.pl [L]

Page 27: Potęga pliku .htaccess

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

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

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

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

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

Dziękuję za uwagę