404 Posted December 17, 2009 Report Share Posted December 17, 2009 (edited) Ir uzlikts iekš .htaccess RewriteRule variants,kurš padotu linku http://lapa.loc/Kategorijas_nosaukums/2009/Raksta_nosaukums ,pārraksta uz: http://lapa.loc/index.php?data=Kategorijas_nosaukums/2009/Raksta_nosaukums .Attiecīgi tālāk $data tiek ar explode+foreach noparsēts,un pēc nosaukumiem vilkti no db ārā sadaļu dati.Viss it kā būtu labi,bet gadījumos,kad neizdodas uzstādīt cookie,ir doma sesijas id pievienot galā url,un neuzspiest ar varu,kam tie ir atslēgti.Doma būtu šādi: http://lapa.loc/Kategorijas_nosaukums/2009/Raksta_nosaukums/sid=191a2cd904ba31b4abce68f6ef3b1824 Bet neizdodas uzrakstīt tādu nosacījumu,kas url pārrakstītu derīgu abiem gadījumiem. Pašreizējais .htaccess saturs ir šāds: RewriteEngine on Options +FollowSymlinks RewriteBase / RewriteCond %{REQUEST_URI} !\.(css|js|jpg|gif|jpeg) RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^lv/(.*)$ $1?lng=lv [L] RewriteRule ^eng/(.*)$ $1?lng=eng [L] RewriteRule ^ru/(.*)$ $1?lng=ru [L] RewriteRule ^(.*) index.php?data=$1 [QSA] Rakstot: RewriteRule ^(.*)/sid=(.*) index.php?data=$1&sid=$2 [QSA] ja sesija netiek pielikta,tad arī lapu neatrod. Mēģināju piemest klāt papildus vēl vienu Rule nosacījumu: RewriteRule /sid=(.*) &sid=$1 [L,QSA] Tad atkal sesija lai arī tiek izdalīta atsevišķi,bet tajā pašā laikā ierakstās arī iepriekšējā rules variantā klāt citiem datiem.Rezultātā $_GET masīvs sanāca šāds: Array ( [data] => Kategorijas_nosaukums/2009/Raksta_nosaukums/sid=191a2cd904ba31b4abce68f6ef3b1824 [sid] => 191a2cd904ba31b4abce68f6ef3b1824 ) Kā varētu piespiest šo: RewriteRule ^(.*) index.php?data=$1 [QSA] ignorēt sesijas daļu: /sid= un atstāt to darīt otrajam? Varbūt ka šāds risinājums vispār ir garām,un to visu var ar 1 panākt? Edited December 17, 2009 by 404 Quote Link to comment Share on other sites More sharing options...
Klez Posted December 17, 2009 Report Share Posted December 17, 2009 ja links ir shads: http://lapa.loc/index.php?data=Kategorijas_nosaukums/2009/Raksta_nosaukums es neredzu jeegu likt rewrite ... jeega ir tad ja ir ?id=1&sid=2&pid=9 tad ir jeega /preces/skapji/iebuvejamie šo lapa.loc/Kategorijas_nosaukums/2009/Raksta_nosaukums/sid=191a2cd904ba31b4abce68f6ef3b1824 manuprāt vajag šādi lapa.loc/Kategorijas_nosaukums/2009/Raksta_nosaukums/?sid=191a2cd904ba31b4abce68f6ef3b1824 Quote Link to comment Share on other sites More sharing options...
404 Posted December 17, 2009 Author Report Share Posted December 17, 2009 (edited) Man attiecīgo sadaļu dati tāpat arī ielasās pēc padotajiem nosaukumiem.Noparsējot $_GET['data'] tiek pieņemts,ka pirmā padotā starp / / būs kategorija,tad sekcija,subsekcija .u.t.t. $data = explode('/',$_GET['data']); if(!empty($data[0])) $category_name = mysql_real_escape_string($data[0]); if($sql = mysql_query(" SELECT * FROM categories WHERE name='".$category_name."' ")) { if(mysql_num_rows($sql) > 0) $category_data = mysql_fetch_assoc($sql); } if(!empty($data[1])) $section_name = mysql_real_escape_string($data[1]); // u.t.t Līdz ar to sanāk,ka rewrite ne tikai dod "draudzīgos" linkus,bet arī vienlaicīgi padod vārdiskos sadaļu id :) Problēma bija tik ar to sesijas atdalīšanu atsevišķā masīva elementā.Lai nav jāštuko,kā viņu no pārējā padotā atšķirt. Edited December 17, 2009 by 404 Quote Link to comment Share on other sites More sharing options...
rpr Posted December 18, 2009 Report Share Posted December 18, 2009 vinjam jau jaabuut masiivaa kaa $data[3], jo sid nav padots kaa parametrs attieciigi qsa to arii nepieliks. Quote Link to comment Share on other sites More sharing options...
404 Posted December 18, 2009 Author Report Share Posted December 18, 2009 Nu jau nāca apgaismība,ka Klez ieteiktais galā piemetot /? dara to pašu,ko gribēju ar RewriteRule /sid=(.*) &sid=$1 [L,QSA]panākt. Tā ka tā arī ir,ka tas sanāk lieki.Paldies par padomiem - tagad viss iet kā vajag. :) Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.