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