reguli de url rewriting in .htaccess

10 posts / 0 new
Last post
adrian_7
reguli de url rewriting in .htaccess

Am o problema cu doua reguli in .htaccess
asadar am urmatoarele doua reguli, sper ca se intelege ce vreau sa fac...

RewriteRule ^(.*).html\?(.*)$	  index\.php?page=$1&$2 	[L]
RewriteRule ^(.*).html$		  index\.php?page=$1 		[L]

Problema este ca nu mi se trimit si alti parametrii GET in afara de "page", se pare ca doar ultima regula e luata in calcul chiar daca am link-ul main.html?test=1 in GET nu apare decat Array ( [page] => main )

Stie careva cum as putea sa rezolv asta?

admin
admin's picture
Re: reguli de url rewriting in .htaccess

Nu's expert in rewrite, dar daca scoti [L] cum se comporta?

adrian_7
Re: reguli de url rewriting in .htaccess

Pai [L] din cate stiu eu inseamna "daca url-ul indeplineste regula curenta nu mai lua in seama restu!", deci in principiu [L] ar trebui sa rezolve problema, deci si daca l-am n-am rezolvat nimic.

admin
admin's picture
Re: reguli de url rewriting in .htaccess

In manual vad ca zice altceva:
"Stop the rewriting process here and don't apply any more rewrite rules."
Care nu e chiar identic cu ce ai zis tu.
http://httpd.apache.org/docs/2.2/mod/mod_rewrite.html#rewriteflags

Deci ai scos L si face la fel?

adrian_7
Re: reguli de url rewriting in .htaccess

da am scol L si face la fel, dar mie mi se pare asta o comportare normala, adica tot acolo scrie "Use this flag to prevent the currently rewritten URL from being rewritten further by following rules"!

ing. Patkos Csaba
ing. Patkos Csaba's picture
Re: reguli de url rewriting in .htaccess

index\.php?page=$1&$2  =>  index\.php?page=$1\&$2

Ajuta?

Csabi's BLOG

Linux registered user # 457717

adrian_7
Re: reguli de url rewriting in .htaccess

Nup din pacate...
ce e curios e ca asa merge, adica primesc toate variabilele din GET:
RewriteRule ^(.*).html$ $1\.php [L]
Insa as prefera sa pot trimite numele paginii in GET sa nu fiu nevoit sa fac cate un php pentru fiecare pagina. Din ce am obs. problemele pornesc de la semnul ? in rewite-rule:
RewriteRule ^(.*).html\?(.*)$   index\.php?page=$1&$2 - care nu este luata in calcul deloc

ing. Patkos Csaba
ing. Patkos Csaba's picture
Re: reguli de url rewriting in .htaccess

Dupa "html" poti avea altceva decat semnul intrebarii? Daca nu, atunci in loc de "\?" pune punct "." sa ia in considerare orice caracter.
^(.*).html.(.*)$

Csabi's BLOG

Linux registered user # 457717

adrian_7
Re: reguli de url rewriting in .htaccess

zici tu ceva, da nu e ce vreau eu...  eu as vrea sa prind numele paginii dinainte de html in $1 si GET sa-l prind intr-un $2 ca apoi sa le pot trimite la index.php de forma asta index.php?page=$1&$2
dar totusi o sa vad ce primesc cu regula propusa de tine, poate cu mici modificari reusesc.

ing. Patkos Csaba
ing. Patkos Csaba's picture
Re: reguli de url rewriting in .htaccess

Da, eu am inteles ce ai vrut tu.

Ce nu stiu eu, cat de bine / performant / corect functioneaza apache cu regexp. Din punct de vedere regexp ce ai scris tu la regula este perfect, exact ca in Perl, dar in .htaccess nu prea m-am jucat cu din astea, de aceea ti-am recomandat varianta noua. Cine stie? Poate Apache nu stie sa faca abstractie de "?" ... nu am idee.

Csabi's BLOG

Linux registered user # 457717