Bonjour, j'ai créé le sitemap d'un site en PHP natif et le problème c'est que j'ai une erreur 404 lorsque l'url est "/sitemap.xml" alors que ça fonctionne très bien avec "/sitemap"

J'envoi la réponse comme ceci :

return new \GuzzleHttp\Psr7\Response(200, ['Content-Type' => 'text/xml'], $this->renderer->render('@sitemap/index', compact('urls')));

13 réponses


Bonjour,

L'extension .xml n'est pas gérée par ton système de réecriture d'URL, voir le Router ou le fichier htaccess.

J'ai essayé de modifier mon htaccess pour accepter les xml mais ça ne fait rien

php.ini, l'extension xml est activée? :/

Oui elle l'est.
Je pense que le problème vient soit du router soit de la reponse, il y en a un des deux qui fait une mauvaise interpretation quand la route finit par ".xml"

Mmmh, et ça dit quoi dans les logs?

Ce n'est pas très grave, tu peux envoyer ton sitemap à google sans l'extension .xml, ça revient au même

C'est bizarre, en local "/sitemap" fonctionne et pas "/sitemap.xml" et en prod aucun des deux fonctionne.
Dans les log j'ai erreur 500 c'est tout.

Tu as activé chez ton hébergeur l'extension xml ?

Je viens de regarder je trouve rien à ce sujet chez ovh

C'est bien encodé en utf-8 ?

Oui, dans la vue : <?xml version="1.0" encoding="UTF-8"?>
et dans le controller je viens de modifier pour l'ajouter mais ça change rien :
return new \GuzzleHttp\Psr7\Response(200, ['Content-Type' => 'text/xml; charset=utf-8'], $this->renderer->render('@sitemap/index', compact('urls')));

tu parle de quel logs ? ceux d'apache ou ceux de ton application ?

est-ce que tu a analysé ce qui se passe en amont du render de XML ?

Mais le fichier en lui même il est encodé en UTF-8 aussi ?