poradniki

.htaccess bez tajemnic - praktyczne porady

header-wpis

.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.

Tworzymy plik .htaccess

Wystarczy wej艣膰 do katalogu, w kt贸rym znajduje si臋 nasza strona internetowa i utworzy膰 nowy plik o nazwie .htaccess. Pami臋ta膰 musimy aby przez przypadek nie nada膰 mu rozszerzenia .txt

Wewn膮trz wklejamy poni偶szy kod :

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 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

# 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

# przekierowanie z bez www na www
RewriteCond %{HTTP_HOST} !^www.
RewriteRule ^(.*)$ http://www.%{HTTP_HOST}/$1 [R=301,L

Kompresja GZIP

GZIP jest programem, kt贸ry ma s艂u偶y膰 bezstratnej kompresji danych, a co za tym idzie szybsze wczytywanie strony
#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

MimeType to rozszerzenia, kt贸re zwracane s膮 przegl膮darce po znalezieniu na serwerze danego typu pliku.
#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.