.htaccess trükkök

RoliSoft
2010 February 04, Thursday 17:23

Az Apache .htaccess fájlja nagyon hasznos lehet ha használni tudod, ugyanis sok esetben olyasmiket tud elvégezni amikre külön írnál egy scriptet. Amit meg lehet oldani .htaccess-ben azt ajánlott az alatt megcsinálni, ugyanis egy külön script csak feleslegesen terhelné a szervert.

  • Két domain egyesítése (rolisoft.net és www.rolisoft.net)
    RewriteEngine On
    RewriteCond %{HTTP_HOST} ^www\.rolisoft\.net [NC]
    RewriteRule ^(.*)$ http://rolisoft.net/$1 [R=301]
  • IP ban
    <Limit GET POST HEAD>
    	Order Deny,Allow
    	Deny from 123.123.123.123
    	Deny from 234.234.234.234
    	Allow from all
    </Limit>
  • Hotlinking megakadályozása
    RewriteEngine On
    RewriteCond %{HTTP_REFERER} !^$
    RewriteCond %{HTTP_REFERER} !^http://(www.)?oldalad_cime.hu/ [nc]
    RewriteRule .* http://oldalad_cime.hu/kepek/ne_lopj.jpg [nc]
  • PHP kiterjesztés eltávolítása
    RewriteEngine On
    RewriteRule ^(([^/]+/)*[^.]+)$ /$1.php [L]
  • Fájllistázás ki- és bekapcsolása
    Options +Indexes # + bekapcsolva; - kikapcsolva
    # egyes fájlok elrejtése a listázásból:
    IndexIgnore *.txt *.mp3 *.avi
  • Alapértelmezett fájl megváltoztatása
    DirectoryIndex kezdolap.html
  • Egyedi HTTP hibaüzenetek
    ErrorDocument 403 /tiltott.html
    ErrorDocument 404 /nem_talalhato.html
    ErrorDocument 500 /szerver_hiba.html
  • SSI engedélyezése – egyszerűbb műveletekre gyorsabb mint egy PHP script
    AddType text/html .shtml
    AddHandler server-parsed .shtml
  • Átirányítás
    # csak egy oldal átirányítása:
    Redirect regi_oldal.html http://www.ujcim.hu/uj_oldal.html
    # teljes honlap átirányítása az új címre:
    Redirect 301 / http://www.ujcim.hu/
  • Bizonyos oldalakról érkező felhasználók kitiltása
    RewriteEngine on
    RewriteCond %{HTTP_REFERER} tiltott_oldal\.hu [NC]
    RewriteCond %{HTTP_REFERER} masodik_tiltott_oldal\.hu [NC]
    RewriteRule .* - [F]
  • Bizonyos user agentek kitiltása – teljes kitiltható bot lista
    SetEnvIfNoCase user-Agent ^FrontPage [NC,OR]
    SetEnvIfNoCase user-Agent ^Java.* [NC,OR]
    SetEnvIfNoCase user-Agent ^Microsoft.URL [NC,OR]
    SetEnvIfNoCase user-Agent ^MSFrontPage [NC,OR]
    SetEnvIfNoCase user-Agent ^Offline.Explorer [NC,OR]
    SetEnvIfNoCase user-Agent ^[Ww]eb[Bb]andit [NC,OR]
    SetEnvIfNoCase user-Agent ^Zeus [NC]
    
    <Limit GET POST HEAD>
    	Order Allow,Deny
    	Allow from all
    	Deny from env=bad_bot
    </Limit>
  • Fájl kiszolgálásának megakadályozása
    <Files adatbazis.db3>
    Order allow,deny
    Deny from all
    </Files>
  • Script fájlok kiterjesztésének megváltoztatása
    # saját .rs kiterjesztés a PHP scripteknek:
    AddType application/x-httpd-php .rs
    # saját .rsi kiterjesztés a CGI scripteknek:
    AddType application/x-httpd-cgi .rsi
  • Fájltípusok letöltésének erőltetése
    AddType application/octet-stream .pdf
    AddType application/octet-stream .zip
    AddType application/octet-stream .mov
  • Tömörítés az Apache mod_deflate moduljával
    <IfModule mod_deflate.c>
    	<FilesMatch ".(js|css)$">
    		SetOutputFilter DEFLATE
    	</FilesMatch>
    </IfModule>
  • Fájl lejáratának elküldése
    <FilesMatch ".(ico|pdf|flv|jpg|jpeg|png|gif|swf)$">
    	Header set Expires "Wed, 20 May 2020 20:00:00 GMT"
    </FilesMatch>
  • Erőltetett caching
    FileETag MTime Size
    ExpiresActive on
    ExpiresDefault "access plus 86400 seconds"
  • Fájlok tömörítése a gzip modul engedélyezésével
    AddOutputFilterByType DEFLATE text/html text/plain text/xml application/xml application/xhtml+xml
    AddOutputFilterByType DEFLATE text/javascript text/css application/x-javascript
    BrowserMatch ^Mozilla/4 gzip-only-text/html
    BrowserMatch ^Mozilla/4.0[678] no-gzip
    BrowserMatch bMSIE !no-gzip !gzip-only-text/html

Ha még tudsz más trükköt is, akkor írd meg egy hozzászólásban!

Hozzászólások
"Két domain egyesítése (rolisoft.net és www.rolisoft.net)
RewriteEngine On
RewriteCond %{HTTP_HOST} ^www\.rolisoft\.net [NC]
RewriteRule ^(.*)$ http://rolisoft.net/$1 [R=301]"

ugyan ennek egy általánosabb megoldása:
RewriteEngine On
RewriteCond %{HTTP_HOST} ^www\.(.*)$ [NC]
RewriteRule ^(.*)$ http://%1/$1 [R=301,L]

így nem kell minden új projektnél átírni a .htaccess fájlban a domaint.
Hello!
Hello!
Hello!
Hello!
Hello!
Hello!
Hello!
Hello!
Hello!
Hello!
Hello!
Hello!
Hello!
Hello!
Hello!
Hello!
Hello!
Hello!
Hello!
Hello!
Hello!
Hello!
Hello!
Hello!
Hello!
Hello!
Hello!
Hello!