poradniki

.htaccess bez tajemnic - praktyczne porady

wpis_header_img

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

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