Question

Je l'ai vu mentionné dans de nombreux blogs sur le net, mais je pense que cela devrait être discuté ici.Que peut-on faire quand on a un framework MVC (je suis intéressé par ZEND) en PHP mais que notre hébergeur ne fournit pas mod_rewrite ?Existe-t-il des « raccourcis » ?Pouvons-nous transférer le contrôle de quelque manière que ce soit (afin qu'un mappage puisse se produire entre les pages) ?Des idées?Merci :-)

Était-ce utile?

La solution

Le framework Zend devrait fonctionner sans mod_rewrite.Si vous pouvez vivre avec vos URL : ressemblant davantage à "/path/to/app/index.php/controller/action".Si vous aviez mod_rewrite, vous pourriez supprimer le bit "index.php", mais cela devrait également fonctionner.

Tout est une question de configuration des routes pour accepter la partie index.php.

Autres conseils

OK mon verdict :-) :J'ai utilisé avec succès Zend sans mod_rewrite et c'est comme vous l'avez tous dit site/index.php/controller/action.Je le savais avant de poster ceci.J'ai aussi découvert sur le net une technique qui "pousse" 404 pages vers index.php donc ce qui n'est pas une ressource (ex.CSS, image, etc) y arrive, à une exception près :Valeurs POST.J'ai donc décidé que la prochaine fois qu'une application devra être créée sur le serveur spécifique, demander poliment mod_rewrite.Si l'administrateur ne peut pas le fournir, parlez-en à mon patron ou si c'est pour moi, changez de fournisseur.En général, il est parfois dommage que le marché PHP soit autant fragmenté (php4, php5, php6, mod_rewrite, mod_auth, mod_whatever), mais c'est une autre histoire...

mod_rewrite est presque essentiel dans l'environnement d'hébergement actuel... mais malheureusement tout le monde n'a pas compris le message.

De nombreux grands programmes PHP (je pense à Magento, mais la plupart peuvent s'en sortir) ont un mode de secours avec une jolie URL lorsque mod_rewrite n'est pas disponible.

Les URL finissent par ressembler à www.site.com/index.php?load-this-page

Ils doivent faire preuve de magie pour récupérer le nom de la variable $_GET et l'utiliser comme sélecteur pour le module/la fonctionnalité à exécuter.

Dans une note connexe, j'ai vu beaucoup d'URL erronées sur le nouveau site Facebook où il utilise le #.Les liens ressemblent donc à www.new.facebook.com/home.php#/inbox/. De toute évidence, nous ne sommes pas censés voir cela, mais cela suggère qu'ils analysent probablement la variable $_SERVER['REQUEST_URI'].

Si vous pouvez trouver un moyen non mod_rewrite pour rediriger toutes les requêtes vers index.php (ou vers l'endroit où se trouve votre script d'initialisation), vous pouvez, comme mentionné ci-dessus, utiliser 'REQUEST_URI' pour récupérer la partie de l'adresse après le domaine, puis analyser faites-le comme vous le souhaitez et faites en sorte que la demande fasse ce que vous voulez.C'est ainsi que Wordpress procède (d'accord, avec mod_rewrite).Tant que vous pouvez rediriger les requêtes vers votre page d'index tout en conservant le même URI, vous pouvez faire ce dont vous avez besoin pour traiter la requête.

Les règles de réécriture de Drupal traduisent

http://example.com/path/goes/here

dans

http://example.com/index.php?q=path/goes/here

... et a une logique pour décider quel type d'URL générer.Si vous pouvez vivre avec des URL laides, cela vous permettrait de conserver toute la logique d'un seul contrôleur frontal en place sans compter sur la réécriture d'URL.

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