poradniki
.htaccess bez tajemnic - praktyczne porady
.htaccess (Hypertext Access) jest plikiem konfiguracyjnym, stosowanym na serwerach WWW Apache. Dzięki niemu możemy określić ustawienia serwera np. zablokować cały ruch na serwerze, czy dostęp do poszczególnych stron. Również pod kątem SEO zawiera i daje nam wiele usprawnień jak chociażby przekierowania z www na bez www, kompresje gzip, wygaśnięcia cache. Umiejętna “konfiguracja” htaccess wpływa na pozycjonowanie stron internetowych.
Parametry .htaccess
Tworzymy plik .htaccess
order allow,deny
deny from all
Options All -Indexes
Przekierowania .htaccess
Zaczyna od wklejenia do naszego pliku .htaccess następującego polecenia
# inicjujemy rewrite engine
RewriteEngine on
Przekierowanie strony z http na https w .htacess
RewriteEngine on
RewriteCond %{ENV:HTTPS} !on
RewriteRule ^.*$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
Wszystkie strony będą od teraz zaczynać się od https:// Przekierowanie z www na bez www .htaccess
# przekierowanie z bez www na www
RewriteCond %{HTTP_HOST} ^www.strona.pl$ [NC]
RewriteRule ^(.*)$ http://strona.pl/$1 [R=301,L]
Przekierowanie z bez www na www .htaccess
# przekierowanie z bez www na www
RewriteCond %{HTTP_HOST} !^www.
RewriteRule ^(.*)$ http://www.%{HTTP_HOST}/$1 [R=301,L
Kompresja GZIP
#kompresja GZIP
mod_gzip_on Yes
mod_gzip_dechunk Yes
mod_gzip_item_include file \.(html?|txt|css|js|php|pl)$
mod_gzip_item_include handler ^cgi-script$
mod_gzip_item_include mime ^text/.*
mod_gzip_item_include mime ^application/x-javascript.*
mod_gzip_item_exclude mime ^image/.*
mod_gzip_item_exclude rspheader ^Content-Encoding:.*gzip.*
# Compress HTML, CSS, JavaScript, Text, XML and fonts
AddOutputFilterByType DEFLATE application/javascript
AddOutputFilterByType DEFLATE application/rss+xml
AddOutputFilterByType DEFLATE application/vnd.ms-fontobject
AddOutputFilterByType DEFLATE application/x-font
AddOutputFilterByType DEFLATE application/x-font-opentype
AddOutputFilterByType DEFLATE application/x-font-otf
AddOutputFilterByType DEFLATE application/x-font-truetype
AddOutputFilterByType DEFLATE application/x-font-ttf
AddOutputFilterByType DEFLATE application/x-javascript
AddOutputFilterByType DEFLATE application/xhtml+xml
AddOutputFilterByType DEFLATE application/xml
AddOutputFilterByType DEFLATE font/opentype
AddOutputFilterByType DEFLATE font/otf
AddOutputFilterByType DEFLATE font/ttf
AddOutputFilterByType DEFLATE image/svg+xml
AddOutputFilterByType DEFLATE image/x-icon
AddOutputFilterByType DEFLATE text/css
AddOutputFilterByType DEFLATE text/html
AddOutputFilterByType DEFLATE text/javascript
AddOutputFilterByType DEFLATE text/plain
AddOutputFilterByType DEFLATE text/xml
# Remove browser bugs (only needed for really old browsers)
BrowserMatch ^Mozilla/4 gzip-only-text/html
BrowserMatch ^Mozilla/4\.0[678] no-gzip
BrowserMatch \bMSIE !no-gzip !gzip-only-text/html
Header append Vary User-Agent
Expires – czas wygaśnięcia cache
# EXPIRES CACHING ##
ExpiresActive on
ExpiresDefault "access plus 1 month"
ExpiresByType image/gif "access plus 1 month"
ExpiresByType image/png "access plus 1 month"
ExpiresByType image/jpg "access plus 1 month"
ExpiresByType image/jpeg "access plus 1 month"
ExpiresByType text/html "access plus 3 days"
ExpiresByType text/xml "access plus 1 seconds"
ExpiresByType text/plain "access plus 1 seconds"
ExpiresByType application/xml "access plus 1 seconds"
ExpiresByType application/rss+xml "access plus 1 seconds"
ExpiresByType application/json "access plus 1 seconds"
ExpiresByType text/css "access plus 1 week"
ExpiresByType text/javascript "access plus 1 week"
ExpiresByType application/javascript "access plus 1 week"
ExpiresByType application/x-javascript "access plus 1 week"
ExpiresByType image/x-ico "access plus 1 year"
ExpiresByType image/x-icon "access plus 1 year"
ExpiresByType application/pdf "access plus 1 month"
Header unset ETag
Header unset Pragma
Header unset Last-Modified
Header append Cache-Control "public, no-transform, must-revalidate"
Header set Last-modified "Tue, 1 Oct 2014 10:10:10 GMT"
Zmiana powiązań typów plików
#pliki z rozszerzeniem .txt będą odczytywane jako pliki .html
AddType text/html .txt
Przypisanie większości znanych formatów do aplikacji:
#css, html, xml, asp, flash i inne
AddType text/css .css
AddType application/xhtml+xml .xhtml
AddType text/html .shtml
AddType text/xml .xml
AddType text/html .asp
Addtype application/x-httpd-php .php
AddType application/x-shockwave-flash .swf
AddType application/x-director .dir .dcr .dxr .fgd
AddType application/x-authorware-map .aam
AddType application/x-authorware-seg .aas
AddType application/x-authorware-bin .aab
AddType image/x-freehand .fh4 .fh5 .fh7 .fhc .fh
AddType application/x-java-applet .class
# dokumenty
AddType application/pdf .pdf
AddType application/msword .doc
#multimedia
AddType audio/mpeg .mp3
AddType video/x-msvideo .avi
AddType audio/x-wav .wav
AddType video/quicktime .mov .qt
AddType video/x-ms-asf .asf .asx
AddType audio/x-ms-wma .wma
AddType audio/x-ms-wax .wax
AddType video/x-ms-wmv .wmv
AddType video/x-ms-wvx .wvx
AddType video/x-ms-wm .wm
AddType video/x-ms-wmx .wmx
AddType application/x-ms-wmz .wmz
AddType application/x-ms-wmd .wmd
#skompresowane
AddType application/zip .zip
AddType application/x-gzip .gz
AddType application/x-gtar .gtar
AddType application/x-rar-compressed .rar
AddType application/octet-stream .dmg
AddType application/x-7z-compressed .7z
#graficzne
Addtype image/jpg .jpg
Addtype image/gif .gif
#pozostałe
AddType application/x-bittorrent .torrent
AddType application/vnd.rn-realmedia .rm
AddType audio/vnd.rn-realaudio .ra .ram
AddType video/vnd.rn-realvideo .rv
Jak wymusić na przeglądarce pobieranie plików zamiast ich automatycznego odczytywania:
AddType application/octet-stream .pdf .gz
Bonus
Flagi modułu mod_rewrite
[R = kod] force redirec – pozwala na przekierowanie linku według podanej wartości
[QSA] query string append – powoduje dodanie na końcu całego zapytania query string
[L] last rule – ustanawia linijkę jako ostatnią, reguły nie będą dalej wykonywane
[NC] no case – ignoruje fakt, czy adres wpisywany jest wielkimi, czy małymi literami
[T = MIME type] force MIME type – ustawienie typu MIME
[F] force URL to be forbidden – zwraca błąd 403
[S=liczba] skip next rule(s) – pomija zapisaną liczbę reguł
[N] next round – przetwarzanie od początku
Pozostałe flagi zostały szczegółowo opisane w dokumentacji modułu mod_rewrite, dostępnej pod adresem http://httpd.apache.org/docs/2.2/mod/mod_rewrite.html.