Falsche Darstellung der URLs mit mod_rewrite (.htaccess)

imex

Grünschnabel
Hallo zusammen,

Ich arbeite mit XAMPP (lokal), auf Domainebene mit Apache sowie PHP v5.x.x unter Windows 7 Pro. Dazu verwende ich als Framework Smarty 3.1.8.

Nun zu meinem Anliegen: Ich habe folgende .htaccess-Datei erstellt:

Code:
<IfModule mod_rewrite.c>
	RewriteEngine On
	# Options FollowSymLinks
	RewriteBase /
	RewriteRule ^items/(.*)__(.*)__(.*)$ items.php?snode=$1&name=$2&p=$3
</IfModule>

In meiner Webseite index.tpl habe ich folgenden Link:

HTML:
<a href="http://xxxxxx.com/items/179473031__Sim-Karten__1">Sim-Karten</a>

Das funktioniert auch (ich werde weitergeleitet). Allerdings habe ich auf der Seite items.tpl (auf die von items.php weitergeleitet wurde) nun folgenden Link:

HTML:
<a href="http://xxxxxx.com/items/items/179473031__Sim-Karten__1">Sim-Karten</a>

Der erste Parameter ("1") wird entfernt und der vorherige Link wird quasi als "Anhang" mitgeschleppt.

Im Quelltext des Browsers (ob Firefox oder IE) steht allerdings:

HTML:
<a href="items/179473031__Sim-Karten__1" title="Sim-Karten" rel="intern">Sim-Karten</a><br/>

... also der richtige Link.

Hat jemand eine Idee woran das liegen oder wie ich erfolgreich testen kann?

Vielen Dank,
imex
 
Zuletzt bearbeitet von einem Moderator:
item: Bitte in Zukunft Code in COde-Tags und HTML in HTML-Tags etc. setzen. Ich habe das jetzt mal für dich gemacht

item: Irgendwo in items.php muss ein Fehler liegen. Zeig doch mal dem smarty-Teil in items.tpl und wie die diesen Link in PHP vorbereitest.

item: Dein letzter Abschnitt verstehe ich nicht - scheint doch richtig zu sein.
 
Danke.

Hier der Abschnitt "Smarty" in der Datei "items.php" (die Instanziierung der Klasse finden natürlich auch statt, also $smarty = new Smarty()):

PHP:
$smarty->clearAllAssign();
$smarty->assign("nodes",$nodes);
$smarty->assign("items",$items);
$smarty->assign("banner",$bannerLink);

$smarty->display("items.tpl");

Und jetzt der Abschnitt in "items.tpl":

HTML:
HTML-Code

<div id="nodes">
{if isset($nodes)}
{foreach key=cid item=obj from=$nodes}
<a href="items/{$obj->BrowseNodeId}__{$obj->Name}__1" title="{$obj->Name}" rel="intern">{$obj->Name}</a><br/>
{/foreach}
{/if}
</div>
 
Zuletzt bearbeitet:
Also müsste das 'items/' welches zuviel ist aus $obj->BrowseNodeId kommen. Ergo aus $nodes[].
Ich würde dort mal nachforschen.
 
Irgendwie hat der Schrägstricht in "items/" in der .htaccess-Datei gestört. Ich habe es jetzt wie folgt umgesetzt:

PHP:
...
RewriteRule ^items__(.*)__(.*)__(.*)$ items.php?snode=$1&name=$2&p=$3

Jetzt geht's. Danke nochmal.
 
Zurück