Seite 1 von 1

mod_rewrite -- Verlinkung im php script - gute idee gefragt

Verfasst: 22.04.2005, 16:04
von kaka
halllo

Ich habe in der .htaccess folgendes stehen:

Code: Alles auswählen

RewriteEngine on
RewriteRule ^index\.html$ index.php [L]

RewriteRule ^classified\.html$ classified.php [L]

RewriteRule ^index_(.*)\.html$ index.php?choice=top [L]

RewriteRule ^index_(.*)\.html$ index.php?catid=$1 [L] 

Die oberen drei Rules funktionieren problemlos. Bei der vierten Rule weiss ich nicht wie ich den Link im PHP-Skript aufrufen kann. Der direkte Link über https://www.blablabla.com/index_1.html funktioniert.

Ich habe im Skript unteranderem folgender Code stehen:

Code: Alles auswählen


 echo "   <a href=\"index.php?catid=$db&#91;id&#93;\" onmouseover=\"window.status='$db&#91;description&#93;';
      return true;\" onmouseout=\"window.status=''; return true;\">$db&#91;name&#93;</a> &#40;$db&#91;ads&#93;&#41;<br>\n";
    echo "   <div class=\"smallleft\">\n";
    echo "   $db&#91;description&#93;<br>\n";
Wie muss ich jetzt den Link im Skript abändern so das ich auf die Seite
https://www.blablabla.com/index_1.html gelangern kann.

Vielleicht so irgendwie? Oder funktioniert das nicht?

Code: Alles auswählen



echo "   <a href=\"index_".$db&#91;id&#93;.".html\" onmouseover=\"window.status='$db&#91;description&#93;';
      return true;\" onmouseout=\"window.status=''; return true;\">$db&#91;name&#93;</a> &#40;$db&#91;ads&#93;&#41;<br>\n";
    echo "   <div class=\"smallleft\">\n";
    echo "   $db&#91;description&#93;<br>\n"; 
Gruss Marcel

Verfasst:
von

Verfasst: 22.04.2005, 16:46
von Metaman

Code: Alles auswählen

RewriteRule ^index_&#40;.*&#41;\.html$ index.php?choice=top &#91;L&#93;

RewriteRule ^index_&#40;.*&#41;\.html$ index.php?catid=$1 &#91;L&#93;
^index_(.*)\.html$ ist doch beides mal das gleiche.
vielleicht solltest du die 4. Zeile ändern

Code: Alles auswählen

RewriteRule ^index-&#40;.*&#41;\.html$ index.php?catid=$1 &#91;L&#93;
und dann änderst du den phpcode in

Code: Alles auswählen

 echo "   <a href=\"index-$db&#91;id&#93;.html\" onmouseover=\"window.status='$db&#91;description&#93;'; 
übrigens die dritte zeile ist irgentwie komisch(für mich jedenfalls

denn alles mit index_XX.html landet auf
index.php?choice=top ganz egal was Du für das XX einsetzt

Verfasst: 22.04.2005, 16:54
von Bones
Hi kaka,

Was heißt:
Der direkte Link über https://www.blablabla.com/index_1.html funktioniert.
?

Wenn ich nicht alles falsch verstehe (und ich habe auch schon einiges mit mod_rewrite gemacht), dann müsste der Link auf https://www.blablabla.com/index.php?choice=top führen.

Das liegt daran, daß Deine dritte RewriteRule bereits die Bedingung für Deine vierte RewriteRule enthält und somit immer matched bevor die 4.te Rule erreicht wird.

Entweder könntest Du folgendes probieren:

Code: Alles auswählen

RewriteRule ^index_&#40;.*&#91;^d&#123;1,3&#125;&#93;&#41;\.html$ index.php?choice=top &#91;L&#93; 

RewriteRule ^index_&#40;.*&#41;\.html$ index.php?catid=$1 &#91;L&#93;
wobei das d{1,3} für mindestens eine und maximal drei Ziffern steht (somit ergeben sich 1000 verschiedene Möglichkeiten für eine catid (0-999)). Natürlich kannst Du auch d{1,x} schreiben und X entsprechend wählen. Das habe ich aber so noch nicht probiert. Ich arbeite mit RewriteCond (Rewrite Conditions):

Code: Alles auswählen

RewriteCond %&#123;REQUEST_URI&#125;   ^index_&#91;a-zA-Z äöüÄÖÜ&#93;+\.html$
RewriteRule ^index_&#40;.*&#41;\.html$ index.php?choice=top &#91;L&#93; 

RewriteCond %&#123;REQUEST_URI&#125;   ^index_&#91;d&#123;1,3&#125;&#93;+\.html$
RewriteRule ^index_&#40;.*&#41;\.html$ index.php?catid=$1 &#91;L&#93;
Somit wird alles was index_buchstabensalat.html heißt auf index.php?choice=top umgeschrieben und alles was index_(1-3stelligeZahl).html heißt auf index.php?catid=(1-3stelligeZahl) umgeschrieben.

Du verlinkst dann in Deinen Scripts auf index_".$db['id'].".html (wie Du schon richtig vermutet hast.

Evtl. solltest Du statt [L] ein [L,QSA] verwenden damit ein möglicherweise vorhandener Querystring (z.B. SessionID) noch hinten angehängt wird.

Einen guten Artikel zum Thema mod_rewrite findest Du hier.

Gruß,
Bones[/url]