Le rendu de texte en clair par le biais de PHP
Pour une raison quelconque, je veux servir mon robots.txt via un script PHP. J'ai la configuration d'apache pour que le robots.txt demande de fichier (en fait toutes les demandes de fichiers) d'arriver à un unique script PHP.
Le code que j'utilise le rendu robots.txt est:
echo "User-agent: wget\n";
echo "Disallow: /\n";
Cependant, il ne traite pas les retours à la ligne. Comment serveur robots.txt correctement, de sorte que les moteurs de recherche (ou un client) voir correctement? Dois-je envoyer certains en-têtes de fichiers txt?
EDIT 1:
Maintenant, j'ai le code suivant:
header("Content-Type: text/plain");
echo "User-agent: wget\n";
echo "Disallow: /\n";
qui ne s'est toujours pas d'affichage des sauts de ligne (voir http://sarcastic-quotes.com/robots.txt ).
EDIT 2:
Certaines personnes ont mentionné son est très bien et pas affichée dans le navigateur. Étais juste curieux de savoir comment celui afficher correctement: http://en.wikipedia.org/robots.txt
EDIT 3:
J'ai téléchargé les deux de la mine et de wikipedia par wget, et de voir cela:
$ file en.wikipedia.org/robots.txt
en.wikipedia.org/robots.txt: UTF-8 Unicode English text
$ file sarcastic-quotes.com/robots.txt
sarcastic-quotes.com/robots.txt: ASCII text
FINAL RÉSUMÉ:
Principal problème était que je n'étais pas le réglage de l'en-tête. Cependant, il y a un autre bug interne, qui vise à rendre le Contenu de Type html. (c'est parce que ma demande est effectivement servi par l'intermédiaire d'un proxy interne, mais c'est un autre problème).
Certains commentaires que les navigateurs n'affichent pas de saut de ligne ne sont que des demi-corriger -> navigateurs modernes afficher correctement les retour à la ligne si content-type text/plain. Je suis la sélection de la réponse qui correspondait étroitement à la réalité et de nullité de la ci-dessus est légèrement trompeuse idée fausse :). Merci à tous pour l'aide et de votre temps!
grâce
JP
Est-il plus de votre code?
Il n'y a plus à votre code ou votre serveur est configuré pour ne pas autoriser les appels à
header
et/ou est mal configuré.Oui, il y est plus de mon code. Permettez-moi de tenter de recréer la plus simple possible fichier/scénario et de poster ici.
OriginalL'auteur | 2010-12-22
Vous devez vous connecter pour publier un commentaire.
Oui, vous avez oublié de définir le Type de Contenu de vos sorties à la
text/plain
:Votre sortie est sans doute d'être envoyé au format HTML, d'où un retour à la ligne est tronquée dans l'espace, et d'afficher un retour à la ligne, vous avez besoin de la
<br />
tag.J'ai vérifié que la page, et je suis toujours à la réception de la réponse type que
text/html
oh c'est si étrange. permettez-moi de débogage supplémentaires.
Il pourrait y avoir un problème dans la manière dont vous avez configuré Apache pour "servir les fichiers par un simple script PHP". Si vous pouvez fournir ce code, nous pourrions être en mesure de vous aider.
OriginalL'auteur RabidFire
header('Content-Type: text/plain')
est correct.<?php
.Content-Type
en-tête a été mise àtext/plain
, pas de navigateur dans son esprit droit serait l'effondrement des espaces. Ce comportement est une exclusivité de HTML et de formats similaires.User-Agent
- je serais à la recherche.Content-Type
en-tête, donc il ne devrait pas être un problème de toute façon.Espère que cette aide.
-n
OriginalL'auteur Neil E. Pearson
BTW, les retours à la ligne sont là juste fine. Ils sont juste pas affichée dans un navigateur. Les navigateurs de l'effondrement de tous les espaces, y compris les retours à la ligne, dans un espace unique.
OriginalL'auteur deceze
Vous devez définir le type de contenu du document que vous êtes en servir. Dans le cas d'un .txt fichier texte:
L'IANA a des informations sur certains des plus populaires MIME (contenu) types.
OriginalL'auteur Matthew Scharley
j'ai eu un problème similaire et soit "\n", ni PHP_EOL travaillé. J'ai finalement utilisé:
L'écho des DEUX personnages fait le tour.
Espérons que cela aide quelqu'un.
Bye
anankin
OriginalL'auteur anakin
Si vous utilisez echo, puis utilisez
<br>
pour les nouvelles lignes. la fonction printf est ce qu'utilise \n.Dans votre cas, l'utilisation de printf parce que vous n'êtes pas à l'aide de HTML. Je crois que c'est la bonne façon de le faire, tout en fixant le type MIME de texte.
\n
dans les chaînes entre guillemets doubles est toujours un saut de ligne, il n'a rien à voir avececho
ouprintf
.<br>
n'est utile que dans le contexte de HTML.print
est synonyme deecho
.printf
est un wrapper autour deprint
qui va le remplacer variable dans une chaîne de format. Comment imprimer le contenu n'est pas pertinent à la façon dont il est affiché.Oups, toutes mes excuses. Je n'ai pas fait de PHP dans quelques mois.
OriginalL'auteur Thomas Havlik