PDA

Arată versiune īntreagă : .Htaccess pe intelesul tuturor.



Stresant
25.01.2009, 09:53
1.Cateva directive de siguranta si compatibilitate


<IfModule mod_php5.c>
php_value register_globals 0
php_value magic_quotes_gpc 0
php_value session.auto_start 0
php_value safe_mode 0
</IfModule>

<IfModule sapi_apache2.c>
php_value register_globals 0
php_value magic_quotes_gpc 0
php_value session.auto_start 0
php_value safe_mode 0
</IfModule>

<IfModule mod_php4.c>
php_value register_globals 0
php_value magic_quotes_gpc 0
php_value session.auto_start 0
php_value safe_mode 0
</IfModule>


2.Modelul .htaccess pe care eu il folosesc este urmatorul:



<IfModule mod_rewrite.c>
RewriteEngine on
RewriteBase /

#Aici intra toate regulile pentru rewrite .

</IfModule>

Observati RewriteBase / , acesta se aplica daca site-ul se afla in radacina , daca spre exemplu
dorim sa aplicam regulile pentru un folder aflat in /site , atunci va deveni
RewriteBase /site

3. Scrierea regulilor :
a.Incepem prin a rescrie index.php :


##INDEX
RewriteRule ^index.html*$ index.php [L]

Pagina va fii accesibila la: index.html
Simplu nu ?

b.Rescriem o pagina cu o singura variabila( index.php?pagina=contact )


RewriteRule ^contact.html*$ index.php?pagina=contact [L]

Pagina va fii accesibila la: contact.html

c.Rescriem o pagina cu 2 variabile (index.php?pagina=comentarii&id=$var) unde $var poate fii orice valoare numerica


RewriteRule ^comentarii-id-([0-9]+).html*$ index.php?pagina=comentarii&id=$1 [L]

Pagina va fii accesibila la : comentarii-id-$var.html (unde $var va fii orice valoare numerica)

Daca nu vrem sa rescriem o valoare numerica ?
Spre exemplu daca vrem sa rescriem url-ul : index.php?pagina=membrii&nume=ION
Vom face :


RewriteRule ^membrii-([a-zA-Z]+).html*$ index.php?pagina=membrii&nume=$1 [L]

Astfel pagina va fii accesibila la : membrii-ION.html
Puteti face altcumva , spre exemplu :


RewriteRule ^lista-membrii-utilizator-([a-zA-Z]+).html*$ index.php?pagina=membrii&nume=$1 [L]

Si pagina va fii accesibila la : lista-membrii-utilizator-ION.html

d. Rescrierea unei pagini cu 3 variabile:
Url-ul initial: index.php?pagina=mesaje&categoria=100&id_mesaj=10234
Regula:


RewriteRule ^mesaje-categoria-([0-9]+)-id_mesaj-([0-9]+).html*$ index.php?pagina=mesaje&categoria=$1&id_mesaj=$2 [L]

Url-ul va devenii :
mesaje-categoria-100-id_mesaj-10234.html

Daca vrem sa avem un nume de categorie si nu o valoare numerica :
Url initial: index.php?pagina=mesaje&categoria=jocuri&id_mesaj=123456


RewriteRule ^mesaje-categoria-([a-zA-z]+)-id_mesaj-([0-9]+).html*$ index.php?pagina=mesaje&categoria=$1&id_mesaj=$2 [L]
Url-ul va devenii:
mesaje-categoria-jocuri-id_mesaj-123456.html

Daca vrem ca ambele variabile sa fie formate doar din litere mari si mici:
Url : index.php?pagina=mesaje&categoria=jocuri&titlu=GTA


RewriteRule ^mesaje-categoria-([a-zA-Z]+)-titlu-([a-zA-z]+).html*$ index.php?pagina=mesaje&categoria=$1&titlu=$2 [L]

Devine :
mesaje-categoria-jocuri-titlu-GTA.html

Daca dorim ca ambele variabile sa contina atat litere mari si mici cat si cifre :
URL initial : index.php?pagina=mesaje&categoria=jocuri&titlu=GTA4


RewriteRule ^mesaje-categoria-([a-zA-Z0-9]+)-titlu-([a-zA-Z0-9]+).html*$ index.php?pagina=mesaje&categoria=$1&titlu=$2 [L]
Devine :
mesaje-categoria-jocuri-titlu-GTA4.html

Un exemplu practic :
Sa spunem ca situl nostru are paginile:
index.php
index.php?pagina=articole
index.php?pagina=articole&categoria=jocuri2
index.php?pagina=articole&categoria=jocuri&id_articol=100
index.php?pagina=jocuri&id=100

.Htaccess va fii:


<IfModule mod_php5.c>
php_value register_globals 0
php_value magic_quotes_gpc 0
php_value session.auto_start 0
php_value safe_mode 0
</IfModule>

<IfModule sapi_apache2.c>
php_value register_globals 0
php_value magic_quotes_gpc 0
php_value session.auto_start 0
php_value safe_mode 0
</IfModule>

<IfModule mod_php4.c>
php_value register_globals 0
php_value magic_quotes_gpc 0
php_value session.auto_start 0
php_value safe_mode 0
</IfModule>

<IfModule mod_rewrite.c>
RewriteEngine on
RewriteBase /

#Rescriem index-ul:
RewriteRule ^index.html*$ index.php [L]

#Rescriem index.php?pagina=articole
RewriteRule ^articole.html*$ index.php?pagina=articole [L]
##Devine articole.html

#Rescriem index.php?pagina=articole&categoria=jocuri2
RewriteRule ^articole-categoria-([0-9a-zA-Z]+).html*$ index.php?pagina=articole&categoria=$1 [L]
#Devine articole-categoria-jocuri2.html

#Rescriem index.php?pagina=articole&categoria=jocuri&id_articol=100
RewriteRule ^articole-din-categoria-([0-9a-zA-Z]+)-id_articol-([0-9]+).html*$ index.php?pagina=articole&categoria=$1&id_articol=$2 [L]
#Devine articole-din-categoria-jocuri-id_articol-100.html

#Rescriem index.php?pagina=jocuri&id_joc=100
RewriteRule ^jocuri-id-([0-9]+).html*$ index.php?pagina=jocuri&id=$1 [L]
#Devine jocuri-id-100.html

#Facem si o pagina de eroare , asfel incat daca o pagina nu este gasita ,
#userul sa fie redirectionat catre pagina de eroare
ErrorDocument 404 /eroare.php
</IfModule>


Cam asta este .
Nota1 : spre exemplu daca pagina pe care o rescriem este de forma
index.php?pagina=jocuri&id_joc=100
Aplicand regula
RewriteRule ^jocuri-id-([0-9]+).html*$ index.php?pagina=jocuri&id=$1 [L]
este valabila si pentru :
index.php?pagina=jocuri&id_joc=101
index.php?pagina=jocuri&id_joc=102
index.php?pagina=jocuri&id_joc=103
index.php?pagina=jocuri&id_joc=104
index.php?pagina=jocuri&id_joc=105
..................................
index.php?pagina=jocuri&id_joc=N
Unde N este orice numar intreg.

Nota2 : In loc de : RewriteRule ^jocuri-id-([0-9]+).html*$ index.php?pagina=jocuri&id=$1 [L]
Puteti pune si
RewriteRule ^jocuri-id-([0-9]+).shtml*$ index.php?pagina=jocuri&id=$1 [L]
sau
RewriteRule ^jocuri-id-([0-9]+).htm*$ index.php?pagina=jocuri&id=$1 [L]
Cu alte cuvinte puteti da paginii orice extensie doriti nu numai .html.

Webnetinfo
26.01.2009, 16:29
.Htaccess - nici nu vreua sa aud d el m-am chinuit 2 zile cu siteu d muzica din cauza lui si nu stiam c are :))

frozen1502
06.02.2009, 23:36
bun tutorialul..si asa nu intelegeam treaba cu htaccesu

mr_andrey2000
07.02.2009, 15:19
Multumesc pentru acest tutorial !!!

johnny18
23.02.2009, 10:25
Bun tutorial thankss...

Dennis
23.02.2009, 12:15
...si daca tot vreti sa-i multumiti utilizatorului care a creat acest tutorial, faceti un click pe *Thanks* si nu deschideti fiecare mesaje noi, nu-si are rostul.

Cu stima
Topic inchis