SlideShare a Scribd company logo
1 of 32
POTĘGA PLIKU .HTACCESS
WOJCIECH KLOCEK
Joomla Day 2016 - Gliwice
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
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
Ustawienia obsługi w konfiguracji
Apache
Domyślnie mechanizm obsługi .htaccess jest
włączony
Wyjątki:
AllowOverride None
AccessFileName .zabezpieczenia
Gdzie umieścić plik .htaccess?
Katalog główny witryny
Katalog administracyjny
Każdy katalog witryny
Parę przydatnych informacji
CHMOD 644
#komentarz
Każda linia powinna kończyć się Enterem
Ostatnia linia pliku powinna być pusta
Określanie domyślnego pliku strony
www
DirectoryIndex index.html index.php jakisplik.html
DirectoryIndex strona-awarii.html
Zmiana powiązań typów plików
AddType text/html .txt
AddType application/zip .zip
AddType text/css .css
AddType application/x-httpd-php .php
AddType application/x-shockwave-flash .swf
AddType application/pdf .pdf
AddType video/x-ms-wmv .wmv
AddType image/jpg .jpg
AddType application/x-bittorrent .torrent
Zmiana powiązań typów plików
Wymuszenie pobrania pliku
AddType application/octet-stream .pdf .gz
Szybka zmiana kodowania dokumentów
AddDefaultCharset ISO-8859-2
Typy MIME w mod_rewrite
AddType application/x-7z-compressed .7z
RewriteRule ^(.+.php)s$ [T=application/x-httpd-php-source]
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]
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
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
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*
Szyfrowanie katalogów
http://www.tools.dynamicdrive.com/password/
http://www.htaccesstools.com/htpasswd-generator/
Tworzymy plik .htpasswd
Zawartość: użytkownik:hasło
Np. uzytkownik1:jf05LdXAvmanY
Tworzymy .htaccess
AuthName "Strefa zaszyfrowana"
AuthType Basic
AuthUserFile
/home/users/nazwakonta/public_html/joomla/.htpasswd
AuthGroupFile /dev/null
require valid-user
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"
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]
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=
Przyjazne linki
J!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
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]
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]
Przekierowania ciąg dalszy
Przekierowania starych adresów podstron na nowe:
Redirect /katalog http://www.strona.pl/plik.php
Redirect 301 /kontakt-do-firmy.html /kontakt
Subdomeny
Przekierowanie subdomeny na odpowiedni katalog bez
konieczności wprowadzania zmian w panelu
administracyjnym domeny
RewriteCond %{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
Subdomeny
W 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]
Subdomeny
Ostatecznie:
RewriteCond %{HTTP_HOST} !^(www.)?strona.pl$[NC]
RewriteCond %{REQUEST_URI} ^(.+)/$
RewriteRule .* http://%1.strona.pl [L]
Subdomeny
Wykorzystanie 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]
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.
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"
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
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
Dziękuję za uwagę

More Related Content

What's hot

Apache Tomcat 8 Application Server
Apache Tomcat 8 Application ServerApache Tomcat 8 Application Server
Apache Tomcat 8 Application Servermohamedmoharam
 
MySQL Cluster 8.0 tutorial
MySQL Cluster 8.0 tutorialMySQL Cluster 8.0 tutorial
MySQL Cluster 8.0 tutorialFrazer Clement
 
MySQL 상태 메시지 분석 및 활용
MySQL 상태 메시지 분석 및 활용MySQL 상태 메시지 분석 및 활용
MySQL 상태 메시지 분석 및 활용I Goo Lee
 
COD2012 九州会場 Active Directory 障害対策
COD2012 九州会場 Active Directory 障害対策COD2012 九州会場 Active Directory 障害対策
COD2012 九州会場 Active Directory 障害対策wintechq
 
Apache web server
Apache web serverApache web server
Apache web serverzrstoppe
 
VMware vSphere 6.0 - Troubleshooting Training - Day 1
VMware vSphere 6.0 - Troubleshooting Training - Day 1VMware vSphere 6.0 - Troubleshooting Training - Day 1
VMware vSphere 6.0 - Troubleshooting Training - Day 1Sanjeev Kumar
 
2.[d2 오픈세미나]네이버클라우드 시스템 아키텍처 및 활용 방안
2.[d2 오픈세미나]네이버클라우드 시스템 아키텍처 및 활용 방안2.[d2 오픈세미나]네이버클라우드 시스템 아키텍처 및 활용 방안
2.[d2 오픈세미나]네이버클라우드 시스템 아키텍처 및 활용 방안NAVER D2
 
SQL Server Clustering and High Availability
SQL Server Clustering and High AvailabilitySQL Server Clustering and High Availability
SQL Server Clustering and High Availability► Supreme Mandal ◄
 
Introduction to failover clustering with sql server
Introduction to failover clustering with sql serverIntroduction to failover clustering with sql server
Introduction to failover clustering with sql serverEduardo Castro
 
Sql server replication step by step
Sql server replication step by stepSql server replication step by step
Sql server replication step by steplaonap166
 
Oracle RAC in the Oracle Cloud
Oracle RAC in the Oracle CloudOracle RAC in the Oracle Cloud
Oracle RAC in the Oracle CloudMarkus Michalewicz
 
Java Content Repository avec Jackrabbit
Java Content Repository avec JackrabbitJava Content Repository avec Jackrabbit
Java Content Repository avec JackrabbitEmmanuel Hugonnet
 
Always on in sql server 2017
Always on in sql server 2017Always on in sql server 2017
Always on in sql server 2017Gianluca Hotz
 
Master page and Theme ASP.NET with VB.NET
Master page and Theme ASP.NET with VB.NETMaster page and Theme ASP.NET with VB.NET
Master page and Theme ASP.NET with VB.NETShyam Sir
 

What's hot (20)

Web Development - Lecture 1
Web Development - Lecture 1Web Development - Lecture 1
Web Development - Lecture 1
 
왜 네이버클라우드플랫폼인가?(박기은 CTO) - 대구 Cloud Innovation summit
왜 네이버클라우드플랫폼인가?(박기은 CTO) - 대구 Cloud Innovation summit왜 네이버클라우드플랫폼인가?(박기은 CTO) - 대구 Cloud Innovation summit
왜 네이버클라우드플랫폼인가?(박기은 CTO) - 대구 Cloud Innovation summit
 
Apache Tomcat 8 Application Server
Apache Tomcat 8 Application ServerApache Tomcat 8 Application Server
Apache Tomcat 8 Application Server
 
MySQL Cluster 8.0 tutorial
MySQL Cluster 8.0 tutorialMySQL Cluster 8.0 tutorial
MySQL Cluster 8.0 tutorial
 
MySQL 상태 메시지 분석 및 활용
MySQL 상태 메시지 분석 및 활용MySQL 상태 메시지 분석 및 활용
MySQL 상태 메시지 분석 및 활용
 
COD2012 九州会場 Active Directory 障害対策
COD2012 九州会場 Active Directory 障害対策COD2012 九州会場 Active Directory 障害対策
COD2012 九州会場 Active Directory 障害対策
 
Apache web server
Apache web serverApache web server
Apache web server
 
VMware vSphere 6.0 - Troubleshooting Training - Day 1
VMware vSphere 6.0 - Troubleshooting Training - Day 1VMware vSphere 6.0 - Troubleshooting Training - Day 1
VMware vSphere 6.0 - Troubleshooting Training - Day 1
 
Active Directory
Active DirectoryActive Directory
Active Directory
 
2.[d2 오픈세미나]네이버클라우드 시스템 아키텍처 및 활용 방안
2.[d2 오픈세미나]네이버클라우드 시스템 아키텍처 및 활용 방안2.[d2 오픈세미나]네이버클라우드 시스템 아키텍처 및 활용 방안
2.[d2 오픈세미나]네이버클라우드 시스템 아키텍처 및 활용 방안
 
SQL Server Clustering and High Availability
SQL Server Clustering and High AvailabilitySQL Server Clustering and High Availability
SQL Server Clustering and High Availability
 
Introduction to failover clustering with sql server
Introduction to failover clustering with sql serverIntroduction to failover clustering with sql server
Introduction to failover clustering with sql server
 
Sql server replication step by step
Sql server replication step by stepSql server replication step by step
Sql server replication step by step
 
Oracle RAC in the Oracle Cloud
Oracle RAC in the Oracle CloudOracle RAC in the Oracle Cloud
Oracle RAC in the Oracle Cloud
 
Web server
Web serverWeb server
Web server
 
Spnego configuration
Spnego configurationSpnego configuration
Spnego configuration
 
Java Content Repository avec Jackrabbit
Java Content Repository avec JackrabbitJava Content Repository avec Jackrabbit
Java Content Repository avec Jackrabbit
 
Always on in sql server 2017
Always on in sql server 2017Always on in sql server 2017
Always on in sql server 2017
 
Master page and Theme ASP.NET with VB.NET
Master page and Theme ASP.NET with VB.NETMaster page and Theme ASP.NET with VB.NET
Master page and Theme ASP.NET with VB.NET
 
Web servers
Web serversWeb servers
Web servers
 

Similar to Potęga pliku .htaccess

Apache http server - proste i zaawansowane przypadki użycia
Apache http server - proste i zaawansowane przypadki użyciaApache http server - proste i zaawansowane przypadki użycia
Apache http server - proste i zaawansowane przypadki użyciaWojciech Lichota
 
Serwer internetowy w systemie Linux
Serwer internetowy w systemie LinuxSerwer internetowy w systemie Linux
Serwer internetowy w systemie Linuxbm9ib2r5
 
Motywy dla WordPressa - historia prawdziwa - WordUp Warszawa
Motywy dla WordPressa - historia prawdziwa - WordUp WarszawaMotywy dla WordPressa - historia prawdziwa - WordUp Warszawa
Motywy dla WordPressa - historia prawdziwa - WordUp WarszawaTomasz Dziuda
 
Motywy Wordpressa Historia Prawdziwa
Motywy Wordpressa Historia PrawdziwaMotywy Wordpressa Historia Prawdziwa
Motywy Wordpressa Historia PrawdziwaTomasz Dziuda
 
Zabezpiecz swoją stronę w Joomla!
Zabezpiecz swoją stronę w Joomla!Zabezpiecz swoją stronę w Joomla!
Zabezpiecz swoją stronę w Joomla!Wojciech Klocek
 
WP-API - teoria i praktyka - WordUp Łódź #4
WP-API - teoria i praktyka - WordUp Łódź #4WP-API - teoria i praktyka - WordUp Łódź #4
WP-API - teoria i praktyka - WordUp Łódź #4Tomasz Dziuda
 
Błędy userów, niedoróbki koderów
Błędy userów, niedoróbki koderówBłędy userów, niedoróbki koderów
Błędy userów, niedoróbki koderówArkadiusz Stęplowski
 
WP-API - teoria i praktyka - WordUp Trójmiasto #2
WP-API - teoria i praktyka - WordUp Trójmiasto #2WP-API - teoria i praktyka - WordUp Trójmiasto #2
WP-API - teoria i praktyka - WordUp Trójmiasto #2Tomasz Dziuda
 
Paleta możliwości web developera
Paleta możliwości web developeraPaleta możliwości web developera
Paleta możliwości web developeraTomasz Borowski
 
Thymeleaf - szablony, które bez przetworzenia zrozumie twoja przeglądarka
Thymeleaf - szablony, które bez przetworzenia zrozumie twoja przeglądarkaThymeleaf - szablony, które bez przetworzenia zrozumie twoja przeglądarka
Thymeleaf - szablony, które bez przetworzenia zrozumie twoja przeglądarkaMaciej Ziarko
 
WordUp Trójmiasto - Sage 9 w praktyce
WordUp Trójmiasto - Sage 9 w praktyceWordUp Trójmiasto - Sage 9 w praktyce
WordUp Trójmiasto - Sage 9 w praktyceDawid Urbański
 
Za darmo nie umarło - WordCamp Wrocław
Za darmo nie umarło - WordCamp WrocławZa darmo nie umarło - WordCamp Wrocław
Za darmo nie umarło - WordCamp WrocławTomasz Dziuda
 
W3 Total Cache - skuteczne przyśpieszanie WordPressa
W3 Total Cache - skuteczne przyśpieszanie WordPressaW3 Total Cache - skuteczne przyśpieszanie WordPressa
W3 Total Cache - skuteczne przyśpieszanie WordPressaBartosz Romanowski
 
Functional widgets in Rails
Functional widgets in RailsFunctional widgets in Rails
Functional widgets in RailsSebastian Sito
 
JSON, REST API
JSON, REST APIJSON, REST API
JSON, REST API3camp
 
NK API - Przykłady
NK API - PrzykładyNK API - Przykłady
NK API - Przykładynasza-klasa
 
Wprowadzenie do WP-API
Wprowadzenie do WP-APIWprowadzenie do WP-API
Wprowadzenie do WP-APITomasz Dziuda
 

Similar to Potęga pliku .htaccess (20)

Apache http server - proste i zaawansowane przypadki użycia
Apache http server - proste i zaawansowane przypadki użyciaApache http server - proste i zaawansowane przypadki użycia
Apache http server - proste i zaawansowane przypadki użycia
 
Serwer internetowy w systemie Linux
Serwer internetowy w systemie LinuxSerwer internetowy w systemie Linux
Serwer internetowy w systemie Linux
 
Motywy dla WordPressa - historia prawdziwa - WordUp Warszawa
Motywy dla WordPressa - historia prawdziwa - WordUp WarszawaMotywy dla WordPressa - historia prawdziwa - WordUp Warszawa
Motywy dla WordPressa - historia prawdziwa - WordUp Warszawa
 
Motywy Wordpressa Historia Prawdziwa
Motywy Wordpressa Historia PrawdziwaMotywy Wordpressa Historia Prawdziwa
Motywy Wordpressa Historia Prawdziwa
 
Zabezpiecz swoją stronę w Joomla!
Zabezpiecz swoją stronę w Joomla!Zabezpiecz swoją stronę w Joomla!
Zabezpiecz swoją stronę w Joomla!
 
WP-API - teoria i praktyka - WordUp Łódź #4
WP-API - teoria i praktyka - WordUp Łódź #4WP-API - teoria i praktyka - WordUp Łódź #4
WP-API - teoria i praktyka - WordUp Łódź #4
 
Błędy userów, niedoróbki koderów
Błędy userów, niedoróbki koderówBłędy userów, niedoróbki koderów
Błędy userów, niedoróbki koderów
 
Android i REST
Android i RESTAndroid i REST
Android i REST
 
WP-API - teoria i praktyka - WordUp Trójmiasto #2
WP-API - teoria i praktyka - WordUp Trójmiasto #2WP-API - teoria i praktyka - WordUp Trójmiasto #2
WP-API - teoria i praktyka - WordUp Trójmiasto #2
 
Paleta możliwości web developera
Paleta możliwości web developeraPaleta możliwości web developera
Paleta możliwości web developera
 
Thymeleaf - szablony, które bez przetworzenia zrozumie twoja przeglądarka
Thymeleaf - szablony, które bez przetworzenia zrozumie twoja przeglądarkaThymeleaf - szablony, które bez przetworzenia zrozumie twoja przeglądarka
Thymeleaf - szablony, które bez przetworzenia zrozumie twoja przeglądarka
 
WordUp Trójmiasto - Sage 9 w praktyce
WordUp Trójmiasto - Sage 9 w praktyceWordUp Trójmiasto - Sage 9 w praktyce
WordUp Trójmiasto - Sage 9 w praktyce
 
Za darmo nie umarło - WordCamp Wrocław
Za darmo nie umarło - WordCamp WrocławZa darmo nie umarło - WordCamp Wrocław
Za darmo nie umarło - WordCamp Wrocław
 
react-pl.pdf
react-pl.pdfreact-pl.pdf
react-pl.pdf
 
W3 Total Cache - skuteczne przyśpieszanie WordPressa
W3 Total Cache - skuteczne przyśpieszanie WordPressaW3 Total Cache - skuteczne przyśpieszanie WordPressa
W3 Total Cache - skuteczne przyśpieszanie WordPressa
 
Symfony 2.3 Wstęp do
Symfony 2.3 Wstęp doSymfony 2.3 Wstęp do
Symfony 2.3 Wstęp do
 
Functional widgets in Rails
Functional widgets in RailsFunctional widgets in Rails
Functional widgets in Rails
 
JSON, REST API
JSON, REST APIJSON, REST API
JSON, REST API
 
NK API - Przykłady
NK API - PrzykładyNK API - Przykłady
NK API - Przykłady
 
Wprowadzenie do WP-API
Wprowadzenie do WP-APIWprowadzenie do WP-API
Wprowadzenie do WP-API
 

Potęga pliku .htaccess

  • 1. POTĘGA PLIKU .HTACCESS WOJCIECH KLOCEK Joomla Day 2016 - Gliwice
  • 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
  • 6. Parę przydatnych informacji CHMOD 644 #komentarz Każda linia powinna kończyć się Enterem Ostatnia linia pliku powinna być pusta
  • 7.
  • 8. Określanie domyślnego pliku strony www DirectoryIndex index.html index.php jakisplik.html DirectoryIndex strona-awarii.html
  • 9. Zmiana powiązań typów plików AddType text/html .txt AddType application/zip .zip AddType text/css .css AddType application/x-httpd-php .php AddType application/x-shockwave-flash .swf AddType application/pdf .pdf AddType video/x-ms-wmv .wmv AddType image/jpg .jpg AddType application/x-bittorrent .torrent
  • 10. Zmiana powiązań typów plików Wymuszenie pobrania pliku AddType application/octet-stream .pdf .gz Szybka zmiana kodowania dokumentów AddDefaultCharset ISO-8859-2
  • 11. Typy MIME w mod_rewrite AddType application/x-7z-compressed .7z RewriteRule ^(.+.php)s$ [T=application/x-httpd-php-source]
  • 12. 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]
  • 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*
  • 16. Szyfrowanie katalogów http://www.tools.dynamicdrive.com/password/ http://www.htaccesstools.com/htpasswd-generator/ Tworzymy plik .htpasswd Zawartość: użytkownik:hasło Np. uzytkownik1:jf05LdXAvmanY Tworzymy .htaccess AuthName "Strefa zaszyfrowana" AuthType Basic AuthUserFile /home/users/nazwakonta/public_html/joomla/.htpasswd AuthGroupFile /dev/null require valid-user
  • 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=
  • 20. Przyjazne linki J!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
  • 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]
  • 23. Przekierowania ciąg dalszy Przekierowania starych adresów podstron na nowe: Redirect /katalog http://www.strona.pl/plik.php Redirect 301 /kontakt-do-firmy.html /kontakt
  • 24. Subdomeny Przekierowanie subdomeny na odpowiedni katalog bez konieczności wprowadzania zmian w panelu administracyjnym domeny RewriteCond %{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
  • 25. Subdomeny W 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]
  • 26. Subdomeny Ostatecznie: RewriteCond %{HTTP_HOST} !^(www.)?strona.pl$[NC] RewriteCond %{REQUEST_URI} ^(.+)/$ RewriteRule .* http://%1.strona.pl [L]
  • 27. Subdomeny Wykorzystanie 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]
  • 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

Editor's Notes

  1. 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
  2. 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
  3. Pliki 7z będą domyślnie otwierane w 7zip ^ i $ oznaczają początek i koniec .+\ wszystkie znaki
  4. 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.
  5. Zablokowanie danego IP Zablokowanie dla wszystkich (np. katalogu) Zablokowanie wszystkim, odblokowanie dostępu dla danego IP Order definiuje kolejność wykonywania warunków
  6. 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.
  7. 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
  8. 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
  9. Przekierowanie do strony błędu Przekierowanie w przypadku błędu na inną stronę Wyświetlenie komunikatu błędu
  10. ( - przetwarzanie ciągu znaków, jakby to był pojedynczy element [ - np. dopasowanie do przedziału od 0 do 9
  11. 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.
  12. Zapis ten bazuje na schemacie AllowOverride None Adres artykułu posiada 4 zmienne
  13. [NC] – nie ma znaczenia wielkość użytych liter we wpisywanym adresie
  14. [NC] – nie ma znaczenia wielkość użytych liter we wpisywanym adresie
  15. Czy wpisze się www.strona.pl/sub czy strona.pl/sub zawsze wyświetli się sub.strona.pl
  16. 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.