Apache htaccess preusmeritve
S pomočjo .htaccess datotek lahko izvajamo različne operacije preden se določena zahteva dejansko izvede, torej lahko si ga zamislimo kot nekakšen pre request. Htaccess se največkrat uporablja za preusmeritve iz stare domene na novo domeno in podobno.
Kje lahko uporabimo htaccess
- preusmeritev iz le http:// naslova na http://www. naslov ali obratno
- preusmerjanje vsebin na druge naslove
- uporabniku prijazni URL-ji o katerem smo že pisali na T&R splet blogu
- preprečevanje t.i. hotlinkanja
- blokiranje določenih IP-jev
- nastavljanje http headerjev
- preprečevanje dostopa vsem s pomočjo Htpasswd datoteke
- keširanje datotek
htaccess sintaksa
htaccess sintaksa ni ravno človeku prijazna, je pa zato moč ter prilagodljivost htaccess toliko večja. Vseh možnosti je preveč zato vam priporočam, da pregledate dokumentacijo na uradni apache strani. Ko boste s pisanjem končali pa lahko sintakso preverite z online validatorjem.
Možne težave
V primeru, da je vaša sintaksa nepravilna oz. je njej pomen dvoumen boste prejeli 500 - Internal Erorr. Še enkrat preverite sintakso ter poskusite počasi odstranjevati določeno funkcionalnost/kodo, tako da bost eliminirali težavo.
Primer uporabite htaccess datoteke
Naj ponovim. Možnih je veliko načinov kako priti do željnega rezultata, zato ni nujno, da so spodnji primeri najbolj optimalni ali najbolj pravilni.
1.) Preusmeritev vse iz www.domena/index.php/vsebina na www.domena/vsebina
-
RedirectMatch 301 ^/index.php(/.*)$ http://www.domena.si$1
2.) Preusmeritev vseh linkov brez www (http://domena.si/) na http://www.domena.si
-
RewriteCond %{HTTP_HOST} ^domena.si [NC]
-
RewriteRule ^(.*)$ http://www.domena.si/$1 [L,R=301]
3.) Preusmeritev stare domene na novo domeno
-
RewriteRule ^(.*)$ http://www.domena.si/$1 [R=301,L]
4.) Preusmeritev vseh zahtevkov razen izjem na home.php
-
RewriteCond %{REQUEST_URI} !^/static/
-
RewriteCond %{REQUEST_URI} !^/blog/
-
RewriteCond %{REQUEST_URI} !^/robots.txt
-
RewriteRule .* home.php
5.) Preusmeritev iz http na https
-
RewriteCond %{HTTPS} off
-
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}
6.) Preusmeritev določenega imenika na novo domeno
-
RedirectMatch 301 /seo/(.*) http://domena.si/$1
7.) Kateri dokument naj se naloži ob 401 napaki
-
ErrorDocument 401 /napake/401.html
8.) Preusmeritev vseh zahtevkov razen imenikov ter datotek
-
RewriteEngine On
-
RewriteCond $1 !^.*(png|swf|gif)$
-
RewriteCond %{REQUEST_FILENAME} !-d
-
RewriteCond %{REQUEST_FILENAME} !-f
-
RewriteRule ^(.*)$ index.php?q=$1 [QSA,L]
9.) Omogočimo dostop le nekaterim IP-jem
-
<Limit GET POST>
-
order allow,deny
-
allow from 127.0.0.1
-
allow from 127.0.0.2
-
allow from 127.0.0.3
-
</Limit>
10.) Preusmeritev določenega imenika na novo domeno
-
Redirect 301 /stara_stran http://domena.si/nova_stran/
Dodatne informacije
- Podoben vodič z primeri uporabe htaccess datoteke
- Poljubno 404 sporočilo o napaki s pomočjo htaccess datoteke
- Kreiranje htaccess pravil glede na vašo trenutni url in željeni url
- Precej nestardnih primerov uporabe htaccess datoteke
Podobni članki:
- Iskalnikom in uporabnikom prijazni URL-ji (User – SEO freindly URL – Apache, IIS)
- Omejitev dostopa do spletne strani preko apache .htaccess in .htpasswd datoteke
- cPanel – dodajanje apache mod_geoip modula – omejitev glede na državo obiskovalca
- PHP – Virtualne pod-domene – virtual subdomains
- Pretvorba PHP MySQL aplikacije v PHP MS SQL aplikacijo (apache, php, mdb2, mysql => iis, php, mdb2, mssql)
- Dodatek za pisanje kode (PHP, MySQL, Javascript itd…)
- Optimizacija PHP kode – prezgodnja optimizacija je zlo – apache ab testiranje
- Poljubno 404 sporočilo – Custom 404 error not found message



November 24th, 2009 ob 6:09 pm
[...] Apache htaccess preusmeritve [...]
May 1st, 2010 ob 9:57 am
Kar nekaj dobrih nasvetov ste dali kateri so mi pomagali pri reševanju težav.
Sedaj pa imam sledeč problem. Sam sem uproabil točko osem (8) sedaj pa me zanima kako bi se dalo najlažje narediti zadevo da bi nekako izgledalo takole:
Sedaj imam:
domena.com/novica/idNovice/imeNovice/
Rad pa bi:
domena.com/novica/idNovice/imeNovice/.html
Naj povem da je stran v celoti v phpju.
In ta .html bi rad vključil v vse podstrani recimo: domena.com/novice.html, domena.com/uporabnik.html
Upam da razumete kaj želim doseči in da mi boste nekako pomagali. Hvala že v naprej.