Pagina de start a forumului Forum PHP Romania - Discutii despre PHP, MySQL, Javascript, AJAX, etc Forum PHP Romania - Discutii despre PHP, MySQL, Javascript, AJAX, etc
Comunitatea PHP Romania
 

Idiots guide in PHP MOD_REWRITE :))
Vezi mesajul original

 
       Pagina de start a forumului Forum PHP Romania - Discutii despre PHP, MySQL, Javascript, AJAX, etc -> PHP Incepători
Subiectul anterior :: Subiectul următor  
Autor Mesaj
LAurenZIO_4U



Data înscrierii: 04/Noi/2004
Mesaje: 93
Locație: Timisoara

Trimis: Lun Mar 07, 2005 4:52 pm    Titlul subiectului: Idiots guide in PHP MOD_REWRITE :))  

Da, da stiu, mai sunt 2 topicuri despre mod_rewrite. Le-am citit dar tot nu am reusit sa-i dau de cap :cry: :evil:
So, poate cineva sa-mi zica pe indelete (a se citi titlu topicului) cum naiba pot sa fac ca in loc de
http://localhost/index.php?idCateg=1&idProduct=2 sa pot scrie
http://localhost/1/2.html ?! :?:

Am citi si topicul al celor de la apache, dar m-au bagat mai rau in ceatza, trebuie sa modific ceva si in http.conf, nu ? Si in fisierul .htaccess ce trebuie sa pun pentru exemplul de mai sus ?

Cei care au facut deja chestia asta, please heeelpppp ! I'am getting nuts :twisted:
Sus  
NDC



Data înscrierii: 19/Feb/2005
Mesaje: 127

Trimis: Lun Mar 07, 2005 10:20 pm    Titlul subiectului: Re: Idiots guide in PHP MOD_REWRITE :))  

LAurenZIO_4U a scris: Da, da stiu, mai sunt 2 topicuri despre mod_rewrite. Le-am citit dar tot nu am reusit sa-i dau de cap :cry: :evil:
So, poate cineva sa-mi zica pe indelete (a se citi titlu topicului) cum naiba pot sa fac ca in loc de
http://localhost/idCateg=1&idProduct=2 sa pot scrie
http://localhost/1/2.html ?! :?:

Am citi si topicul al celor de la apache, dar m-au bagat mai rau in ceatza, trebuie sa modific ceva si in http.conf, nu ? Si in fisierul .htaccess ce trebuie sa pun pentru exemplul de mai sus ?

Cei care au facut deja chestia asta, please heeelpppp ! I'am getting nuts :twisted:

Asta ai incercat? http://www.phpfreaks.com/tutorials/23/0.php
Sus  
beginner18



Data înscrierii: 30/Aug/2004
Mesaje: 746
Locație: Bucuresti

Trimis: Lun Mar 07, 2005 11:29 pm    Titlul subiectului:  

am niste nelamuriri cu provire la acel tutorial, si in general, pentru seterea rewrite-ului:
ce sunt aceste linii de cod:
./configure
--enable-module=rewrite
--enable-shared=rewrite
unde folosesc acestea?

iar pentru httpd.conf, erau:
<Directory /www/htdocs/yoursite>
Options ExecCGI FollowSymLinks Includes MultiViews
</Directory>
Sa inteleg ca dau copy/paste in fisierul httpd.conf, nu?
Sus  
Pirahna



Data înscrierii: 22/Aug/2004
Mesaje: 4530
Locație: la birou

Trimis: Lun Mar 07, 2005 11:53 pm    Titlul subiectului:  

Citat: ce sunt aceste linii de cod:
./configure
--enable-module=rewrite
--enable-shared=rewrite
aceste linii de cod le folosesti la compilarea php-ului ...

Citat: <Directory /www/htdocs/yoursite>
Options ExecCGI FollowSymLinks Includes MultiViews
</Directory>
da ... dai copy si paste :)
Sus  
beginner18



Data înscrierii: 30/Aug/2004
Mesaje: 746
Locație: Bucuresti

Trimis: Mar Mar 08, 2005 12:06 am    Titlul subiectului:  

cum adica la compilarea php+ului :?:
Sus  
Pirahna



Data înscrierii: 22/Aug/2004
Mesaje: 4530
Locație: la birou

Trimis: Mar Mar 08, 2005 12:09 am    Titlul subiectului:  

vezi ce se intampla daca nu zici ca nu ai linux ?? :D

anyway ... pe windoze mi se pare ca il iei ca sursa ... si il pui pe c++
si pe qt si il compilezi cu optiunile respective ...


cu qt m-am jucat de curand si il gasesti la
www.trolltech.com


// edit : am gasit http://www.schau.com/apachephp/apachephpwin32/index.html
Sus  
johnutz



Data înscrierii: 20/Iul/2004
Mesaje: 956
Locație: Între scaun și tastatură

Trimis: Mar Mar 08, 2005 8:09 am    Titlul subiectului:  

Nu e nevoie sa compilezi modulul, ci doar sa il activezi.
Cauta in httpd si decomenteaza linia:
#LoadModule rewrite_module modules/mod_rewrite.so
si linia:
#AddModule mod_rewrite.c
Adica le stergi diezul din fatza.
Nu uita sa restartezi apache-ul.
Se pare ca a 2-a linie exista numai la apache 1.3.x ... :?
Sus  
LAurenZIO_4U



Data înscrierii: 04/Noi/2004
Mesaje: 93
Locație: Timisoara

Trimis: Mar Mar 08, 2005 5:15 pm    Titlul subiectului:  

Lol, am citit tutorialul de la PhpFeraks, dar degeaba .... I'am so f**ng stupid.

Am fisierul .htaccess in directorul cu scriptul "index.php" :
RewriteEngine on
RewriteRule ^(.*)\.html$ /index.php?idCateg=$1 [L]
RewriteRule ^(.*)/(.*)\.html$ /index.php?idCateg=$2&idProduct=$1 [L]

L-am adaptat corect pt. exemplul meu ? Pentru ca daca e sa scriu http://localhost/1.html pentru http://localhost/index.php?idCateg=1 imi zice ca pagina nu exista :!:

Cum pot vedea daca am setat pe ON Apache-ul sa lucreze in mod_rewrite ? In ce variabila de mediu este data asta la phpinfo() ?
Sus  
aurelian



Data înscrierii: 01/Iun/2003
Mesaje: 833
Locație: Bucuresti

Trimis: Mar Mar 08, 2005 5:29 pm    Titlul subiectului:  

Apache2:
in php_info la apache2handler, la Loaded Modules apare mod_rewrite
Sus  
strategy



Data înscrierii: 19/Noi/2004
Mesaje: 351
Locație: Oradea

Trimis: Mie Mar 09, 2005 9:58 am    Titlul subiectului:  

deci: 'pt wingoz'
1. Ca sa-l activezi: ___httpd.conf___

a. decomentezi #LoadModule rewrite_module modules/mod_rewrite.so
---blabla.c is sursele si in wingoz nu ai deaface cu ele .. *unix platform

b. in directiva, ca sa nu ai alte probleme pe parcurs, daca ii un server local [asta da drumu la FollowSymLinks, chestia care te ajuta cu mod_rewrite]:
Options FollowSymLinks
AllowOverride All

c. undeva mai jos ii asta: Options Indexes FollowSymLinks

d. imediat urmatoarea linie ii [asta activeaza ce directive poti folosi in .htaccess]: AllowOverride All

e. restul is setari default si is bine puse.

f. ca sa ai si un debug, introdu linia asta [9 ii maxim de solutii returnate in caz de avarii, 0 inseamna off --- iti recomand un level mai mic sa nu te incurce de ex: 3 sau 4, is erori date deobicei]

RewriteLogLevel 9
RewriteLog logs/rewrite.log
------------------------------------------------------
acum revenim la ce vrei sa faci:
________.htaccess_________

2.
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([^/.]+)\.html$ /index.php?idCateg=$1 [L]
RewriteRule ^([^/.]+)/([^/.]+)\.html$ /index.php?idCateg=$2&idProduct=$1 [L]

a. nu mai tre sa folosesti Options +FollowSymLinks pt ca am activat asta deja

b. nu folosi '*' , ca-ti va returna uneori greseli .. ii cu probleme.
in loc de ([^/.]+) pt cifre poti folosi ([0-9]+)

c. ^([^/.]+)\.html$ /index.php?idCateg=$1

so, in script cand vei apela <a href="asdf.html">asdf</a> at mod_rewrite`ul va sti sa apeleze ca si cum ai fi scris index.php?idCateg=asdf
.. deci .. $var = $_GET['idCateg'];
$var va lua valoarea 'asdf' din URL, la fel si pt urmatoare regula .. /zxcv/asdf.html 2 variabile de get.

d. recomandare: ai grija ca orice link din site-ul tau .. regula o va interpreta ca si /index.php?... pt ca regula incepe cu ^(orice ai introduce aici)$

si daca vei avea la un moment dat de folosi shtiu io .. /imagini/poze.php?id=1&poza=2 si ai un link la el .. '.htaccess' va interpreta ca 'imagini' va fi variabila get de la index.php?idCateg=$1
so ce ii de facut .. sa faci reguli pt fiecare in parte:
adica
^site/([^/.]+).\html index.php?idCateg=$1 [L]
^site/([^/.]+)/([^/.]+).\html index.php?idCateg=$1&idProduct=$2 [L]
^imagini/
e doar un ex

L - inseamna Last, adica nu mai este altceva dupa regula.. deci .. majoritatea regulilor sa le termini in [L]
NC - case sensitive
F - forbidden
N - next loop [ai mare grija cu asta!!!]
! - NOT ... negatie
and so on .
Sus  
LAurenZIO_4U



Data înscrierii: 04/Noi/2004
Mesaje: 93
Locație: Timisoara

Trimis: Mie Mar 09, 2005 11:48 am    Titlul subiectului:  

Hey, 10x a lot strategy, it is working :lol:
Now another 2 stupid questions:

1.De ce atunci cand am http://localhost/1/1.html si dau click pe Refresh
imi spune The requested URL /index.php was not found on this server. ? Pentru ca daca bag url-ul in browser imi arata pagina respectiva...

2. Tu ai zis ca:
Citat: in script cand vei apela <a href="asdf.html">asdf</a> at mod_rewrite`ul va sti sa apeleze ca si cum ai fi scris index.php?idCateg=asdf ori eu vreau exact invers: sa pot baga in script linkurile de forma: index.php?idCateg=asdf.
Problema e ca meniul merge perfect pentru http://localhost/index.php?idCateg=1&idProduct=1 insa pentru http://localhpost/1/1.html meniul are alte linkuri: in loc de <a href="index.php?idCateg=1&idProduct=1"> acum imi baga "1/index.php?idCateg=1&idProduct=1" si bineinteles ca pagina respectiva nu exista ! :roll: De ce naiba baga "1" in fata ca si cum ar fi un director acolo?
Sus  
strategy



Data înscrierii: 19/Noi/2004
Mesaje: 351
Locație: Oradea

Trimis: Mie Mar 09, 2005 4:52 pm    Titlul subiectului:  

sigur ai o greseala in cod ..

vezi ca ii o mica diferenta intre /index.php si index.php
'/' inseamna ca te trimite in root/base automat .. ..

iar sa folosesti in cod <a href="index.php?foo=1&bar=2"</a> in loc de <a href="val1/val2.html">asdf</a> si io am incercat mai multe variante pana am ajuns la asta .. ii mai usor pana la urma sa am un cod mai lizibil .. daca tot se poate sa-mi iau variabilele get din url sub forma asta, de ce sa nu lucrez asa ?

1. uitate in log sa vezi unde te redirectioneaza
2. in script cand vei apela <a href="asdf.html">asdf</a> at mod_rewrite`ul va sti sa apeleze ca si cum ai fi scris index.php?idCateg=asdf
DACA ai ca si regula
RewriteRule ^([^/.]+).\html$ index.php?idCateg=$1
at ([^/.]+) ia valoarea lui $1 .. sub forma respectiva si in script vei apela <a href="asdf.html">asdf</a>
Sus  
PHPRomania Bot
Bot Member


Data înscrierii: 27/Dec/2007
Mesaje: 1
Locaţie: Server Google
Trimis: Mie Dec 26, 2007 7:01 pm   Titlul subiectului: Ad  

Sus  
 
       Pagina de start a forumului Forum PHP Romania - Discutii despre PHP, MySQL, Javascript, AJAX, etc -> PHP Incepători
Pagina 1 din 1


Powered by phpBB 2.0.22 © 2001, 2002 phpBB Group
Varianta în limba română: Romanian phpBB online community