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