xml url relative et absolu

christobal
Invité n'ayant pas de compte PHPfrance

22 nov. 2007, 17:13

Bonjour,
Je viens de rencontrer un pb très gênant dans mon flus rss.
En effet mon flux est généra avec les article que nous produisons. Il nous arrive aussi de mettre dans ces articles des lien interne entre articles (<a href="inscription-aux-sorties.html">ici</a>).
Certes dans le code du flux l'url est bonne mais quand je clic sur le lien l'url est www.monsite/xml/ inscription-aux-sorties.html.
J'ai bien compris que si dans l'url se trouve /xml/ c'est parce que le fichier rss.xml se trouve dans le dossier /xml/.
Ma question est donc : Comment faire pour empêcher que soit affiché /xml/. Si non les liens ne marcheront pas.

merci

Administrateur PHPfrance
Administrateur PHPfrance | 3088 Messages

29 nov. 2007, 09:39

À ma connaissance, les liens doivent être absolus, donc ta seule option est d'utiliser des liens absolus. À la limite, tu n'es pas obligé de taper le "http://" et tu peux te contenter de

Code : Tout sélectionner

<a href="/inscription-aux-sorties.html">...</a>
Si ton HTML est mélangé au reste du RSS tu devrais pouvoir utiliser XPath via SimpleXML pour localiser les liens locaux et les modifier
foreach ($rss->xpath('//a[@href][starts-with(@href, "/") = false]') as $a)
{
	$a['href'] = '/' . $a['href'];
}

Mammouth du PHP | 2937 Messages

29 nov. 2007, 18:36

Pour un flux RSS, les liens doivent être impérativement absolus, et donc commencer par "http://www.tonsite.com" (sinon, ton flux risque de ne pas être validé par les validateurs RSS). N'oublie pas que les lecteurs de flux rendent les éléments link cliquables et qu'ils sont étrangers à tout site. :wink: