2009-06-21 4 views
0

Je l'ai utilisé mod_rewrite pour réécrire des liens sur mon site comme ceci:mod_rewrite reprenant tous les liens sur la page

mysite.com/store/<store_id>/<store_name>/<page> 
mysite.com/store.php?id=<store_id>&page=<page> 

par exemple:

mysite.com/store/1313/johnny-walker-inc/13 
mysite.com/store.php?id=1313&page=13 

Cependant, en conséquence, tous les mes liens que nous commencent maintenant relationnellement placés à la fin du lien, par exemple:

mysite.com/send_message.php 

est devenu

mysite.com/store/1313/johnny-walker-inc/send_message.php 

Comment puis-je résoudre ce problème?

Voici mon code mod_rewrite, au cas où je fais une erreur avec elle:


RewriteRule ^store/([0-9]+)/[^/]+/([0-9]+)$ store.php?storeid=$1&page=$2 [L]

Merci!

Répondre

5

Vous devez faire vos liens par rapport à la racine, comme ceci:

<a href="/send_message.php">link</a> 

Notez la barre oblique avant send_message.php.

0

Personnellement, je ne vois qu'une seule solution: Il suffit de rendre tous vos liens absolus. Ce n'est pas directement un problème avec mod_rewrite, mais la façon dont les navigateurs interprètent ces liens. De leur point de vue, vous avez une structure de répertoire et ils interprètent la position relative en conséquence.

0

D'autres solutions incluent une BASE href ou simplement réécrire tous les éléments de page qui peuvent être référencés par la racine de contexte imaginaire que vous montrez au client.