Jump to content
php.lv forumi

Neskaidrības ar RewriteRule pielabošanu.


404

Recommended Posts

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 by 404
Link to comment
Share on other sites

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

Link to comment
Share on other sites

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 by 404
Link to comment
Share on other sites

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

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
×
×
  • Create New...