Comment une URL comme http: travail //localhost/index.php/articles/edit/1/my-first-article sans .htaccess?

StackOverflow https://stackoverflow.com/questions/966916

Question

Je ne comprends pas:

http: //localhost/index.php/articles/edit / 1 / my-first-article

Cette URL est mentionné comme un exemple dans le documentation cadre Kohana . J'ai poussé autour dans les fichiers de mon installation, et il n'y a pas .htaccess d'ailleurs ma propre qui n'a rien à voir avec cela.

Alors, comment peut-il être qu'une index.php est appelée mais, en tant que paramètres, les choses ressemble à des répertoires ajoutés à l'URL? Cela ne regarde pas « vrai ».

Ou est-ce juste comment les choses natif PHP / Apache / HTTP fonctionne réellement? Si je comprends bien, / est toujours dire « hey, un répertoire! ». Donne-moi vraiment zéro sens ... comment est-ce possible? Ou ont-ils quelque part un .htaccess que je ne peux pas voir / trouver?

Était-ce utile?

La solution

En PHP, vous pouvez obtenir les données après le nom du fichier avec le $_SERVER["PATH_INFO"] variable. Cela vous permet d'obtenir essentiellement des informations sans avoir à utiliser des variables GET, ce qui signifie que Google et co pensera que vous utilisez des pages statiques. Ceci est essentiellement une alternative à mod_rewrite qui est souvent activée alors que mod_rewrite est le plus souvent pas activé.

Cela vous est peut-être évident, mais il n'a pas été immédiatement pour moi, cela ne fonctionne pas correctement sur les pages d'index, sauf si vous utilisez le nom du fichier. Par exemple, http://example.com/test/my/get/params ne fonctionnera pas, alors que la volonté de http://example.com/test/index.php/my/get/params.

Autres conseils

De la Apache docs :

  

AcceptPathInfo directive

     

Cette directive détermine si   les requêtes qui contiennent de fuite   l'information qui suit un chemin   nom réel du fichier (ou fichier inexistant   dans un répertoire existant) sera   acceptée ou rejetée. la fuite   informations chemin peut être fait   disponible pour les scripts dans le PATH_INFO   variable d'environnement.

     

Par exemple, supposons que l'emplacement   / test / pointe à un répertoire   ne contient que le seul fichier   here.html. demande ensuite pour   /test/here.html/more et   /test/nothere.html/more deux collectionnez   / Plus que PATH_INFO.

Je suppose que ce paramètre est activé quelque part comme dans httpd.conf. Notez que cela, comme mod_rewrite, peut être activé / configuré dans un certain nombre d'endroits - voir ici .

AcceptPathInfo est activée pour votre serveur. :)

Je ne suis pas à l'aide Kohana, donc je ne sais pas si ma méthode sera de toute utilisation, mais lorsqu'un serveur ne prend pas en charge les fichiers .htaccess (ou réécrire les règles) mon « cadre » génère des URI comme ceci:

http://www.domain.com/? / articles / modifier / 1 / my-first-article (notez le?)

Il est une méthode similaire à celle utilisée par le framework Frog, analyser juste $_SERVER['REQUEST_URI'] (ou $_SERVER['HTTP-X-REWRITE-URL'] sur les serveurs Windows) et exploser sur le « / ».

Cette méthode est complètement récrire URI indépendant et génère encore plus ou moins SEO amical

Espérons que c'est d'aucune utilité pour vous.

Probablement pas le cas ici, et certainement pas recommandé, et probablement pas la bonne réponse ...

...

J'ai vu des gens utiliser 404 pages pour analyser la demande et comprennent la bonne page avec cette information.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top