2010-06-24 10 views
0

Bien sûr, la méthode traditionnelle consiste à laisser le système de fichiers et votre serveur web élaborer les URLs. EG, www.example.com/index.html -> /var/www/public_html/index.htmlen utilisant des URI basés sur des fichiers ou non

Mais j'ai remarqué une tendance dans laquelle, au lieu de laisser le serveur web faire le mapping pour vous, vous faites-le vous-même (par exemple, Rails et son fichier de configuration de routes, donc/index est mappé sur app/controllers/index.rb ou w/e vous l'avez configuré pour être).

Maintenant, je me rends compte que l'un des avantages de cette dernière approche est que personne ne peut voir votre code source si le serveur ne parvient pas à exécuter des commandes ou w/e; mais pour les CGI compilées, ce n'est évidemment pas un problème.

Existe-t-il une raison réelle (à part des idées liées à REST) ​​pour analyser les URL vous-même? (J'ai l'impression que c'est plus lent que de laisser Apache le faire.)

Répondre

1

La chose à propos de la définition des itinéraires vous-même (comme l'exemple de ruby ​​que vous avez donné) est que les URI n'ont pas à pointer vers des fichiers réels. Dans le cas des frameworks MVC, ils pointent simplement vers des actions. Vous pouvez avoir plusieurs actions à gérer par le même contrôleur, qui est dans la même classe et dans le même fichier. Voici un nice (ASP.NET MVC) example de ce que le routage vous donne (en particulier jeter un oeil à la section sur la recherche). L'extension de cela est que les URI ne pointent pas vers des fichiers, ils pointent vers des ressources. De telles ressources pourraient être soutenues par des fichiers, ou des tables de base de données, ou par un pauvre type qui écrit html pour chaque requête à la main et tape les 0 et les 1 en utilisant le code Morse.

+0

Bien sûr. Mais encore une fois, quel est le problème d'avoir example.com/resource?id=55 en dehors de la mémorabilité, bien sûr. Le fait est que la plupart des gens ne se souviendront pas d'un identifiant de ressource de toute façon. –

+0

@aharon: [Mieux SEO] (http://weblogs.asp.net/scottgu/archive/2010/04/20/tip-trick-fix-common-seo-problems-using-the-url-rewrite-extension .aspx). Et vous avez raison, il est peu probable que les gens se souviennent de 'resource? Id = 55', mais ils se souviendront probablement de' documents/wedding-guest-list'. – R0MANARMY

3

La principale raison d'avoir du code derrière une URL est qu'elle permet aux URL qui ne sont pas sauvegardées par un fichier de répondre aux requêtes. Vous voudrez peut-être avoir un CGI sur le disque pour chaque URL que vous pourriez vouloir servir, mais vous n'avez probablement pas. Vous pouvez faire /products.cgi?productid=12, mais une URL plus jolie pour les humains à utiliser est /products/12.

+0

Quel est l'avantage de la joliesse si? Il est peu probable que les gens essaient d'accéder à un produit spécifique par identifiant via une adresse web, n'est-ce pas? –

+0

@aharon: Non, mais vous voudrez peut-être ajouter des données à l'URL, jetez un oeil à l'URL de cette question par exemple. Le titre fait partie de l'URL. Lorsque vous envoyez un lien à quelqu'un, il sait immédiatement à quoi s'attendre en cliquant dessus. – R0MANARMY

Questions connexes