2009-11-24 6 views
1

J'ai écrit plusieurs applications Web MVC mais jamais auparavant en PHP, et j'essaie de trouver la meilleure façon de travailler avec Zend Framework v1.9.5.Que dois-je utiliser .htaccess dans l'application Zend Framework 1.9.5?

Je ne comprends pas le rôle de .htaccess dans une application Zend Framework 1.9.5. J'ai consulté de nombreux tutoriels, livres et questions sur Zend Framework (mais la plupart d'entre eux sont pour la version 1.8 au plus récent) et ils parlent tous du rôle central du fichier .htaccess. Je comprends que .htaccess peut être utilisé pour supporter les hôtes virtuels, la réécriture d'URL, et pour permettre à Apache de servir des fichiers statiques sans passer par index.php mais je ne suis pas sûr que ce soit pratique courante ou encore nécessaire dans v1.9.5.

Actuellement, j'ai écrit quelques applications assez simples (HTML, CSS, jQuery) Zend Framework et créé des hôtes virtuels Apache pour eux dans un environnement de test Ubuntu Server 9.10. Je n'ai utilisé aucun fichier .htaccess et les applications semblent fonctionner correctement.

Voici ce que je l'ai fait jusqu'à présent:

J'ai créé mes applications en utilisant Eclipse/PDT et l'outil de zf.sh. J'ai ajouté les répertoires css, images et js au répertoire public que 'zf create project' a produit. Ces applications fonctionnent correctement sur mon installation MAMP locale.

Sur le serveur, j'ai installé le Zend Framework dans /usr/local/Zend/share/ZendFramework-1.9.5 et ajouté /usr/local/Zend/share/ZendFramework-1.9.5/library à 'include_path' dans php.ini. J'ai copié les applications dans les répertoires du serveur/home/myadmin/public_html/domain [12]/com.

J'ai créé des hôtes virtuels en ajoutant des entrées dans le répertoire de sites disponibles Apache, comme indiqué dans Slicehost Virtual Host Setup. J'affecte DirectoryIndex = index.php et DocumentRoot =/home/myadmin/public_html/domaine [12]/com/public. Les deux applications semblent fonctionner correctement.

Dois-je utiliser des fichiers .htaccess? Pour quoi?

*** EDIT - My Solution 

Basé sur le lien de Richard, je me suis déplacé les déclarations de ré-écriture qui vivent habituellement dans .htaccess dans ma définition d'hôte virtuel, et maintenant mes applications ne pas utiliser un fichier .htaccess. Mon domain1.com fichier hôte virtuel ressemble:

<VirtualHost *:80> 
    # Define admin email, server name, and any aliases 
    ServerAdmin [email protected] 
    ServerName domain1.com 
    ServerAlias www.domain1.com 

    # Only serve files from inside this directory 
    DocumentRoot /home/myadmin/public_html/domain1.com/public 

    # Directly serve any requested files that exist in DocumentRoot; 
    # otherwise redirect the request to the index.php script 
    RewriteEngine off 
    <Location /> 
    RewriteEngine On 
    RewriteCond %{REQUEST_FILENAME} -s [OR] 
    RewriteCond %{REQUEST_FILENAME} -l [OR] 
    RewriteCond %{REQUEST_FILENAME} -d 
    RewriteRule ^.*$ - [NC,L] 
    RewriteRule ^.*$ /index.php [NC,L] 
    </Location> 

    # Set up log file locations 
    LogLevel warn 
    ErrorLog /home/myadmin/public_html/domain1.com/data/logs/error.log 
    CustomLog /home/myadmin/public_html/domain1.com/data/logs/access.log combined 
</VirtualHost> 

Répondre

1

La configuration VirtualHost et le fichier .htaccess sont deux alternatives pour URL rewriting dans Zend Framework. Ils remplissent la même fonction et vous n'avez pas besoin des deux.

La réécriture d'URL dirige simplement toutes les demandes de fichiers non statiques vers votre index.php.

Routing est le processus de décomposition de l'URI de la requête et de déterminer quel module/contrôleur/action doit être exécuté. C'est une fonction liée mais séparée à la réécriture d'URL.

+0

Réponse précise avec deux liens très utiles. Merci. – keithm

3

Une utilisation primaire de .htaccess pour zend framework et la plupart des cadres php est de rediriger toutes les requêtes (à l'exception des fichiers statiques) à un fichier d'amorçage. Vous n'en avez pas forcément besoin mais votre URL finira par ressembler à /index.php/controller/action par opposition à/controller/action

Vous pouvez également ajouter directement les règles de réécriture à votre configuration apache.

+0

ZF 1.9.5 effectue son propre routage sans utiliser .htaccess.Par défaut, si je définis une action 'zf create action getit controller', l'URL est '/controller/getit'. Il est également possible de faire beaucoup de personnalisation avec $ Router-> addRoute() dans index.php. – keithm

+1

Lors de l'utilisation des outils de ligne de commande zend framework, il crée le fichier htaccess dans le répertoire public. –

+0

Exactement! Il est étrange qu'Eclipse/PHT ne l'affiche pas mais la ligne de commande le confirme. Quel est le rôle de ce fichier .htaccess par rapport au routeur ZF? – keithm

Questions connexes