Zend FR

Consultez la FAQ sur le ZF avant de poster une question

Vous n'êtes pas identifié.

#1 28-07-2011 15:03:47

patstey
Membre
Date d'inscription: 21-01-2009
Messages: 15

[résolu] url rewriting et Alias ...

Bonjour,

Après un break de 2 ans me voilà de retour sur mon clavier à coder une application Zend Framework.

Je développe actuellement en local (la mise en prod n'est pas prévue avant l'année prochaine) et j'ai un soucis mineur avec mes alias.

Mon site fonctionne parfaitement lorsque je le place dans mon documentRoot mais lorsque j’essaie de le mettre dans un alias l’URL-rewriting ne fonctionne pas correctement ou du moins me pose un petit problème.

Dans mon httpd.conf (apache) :

Code:

DocumentRoot "/www"

<Directory "/www">
     Options Indexes FollowSymLinks MultiViews
    AllowOverride All
    Order allow,deny
    Allow from all
</Directory>

Alias /monAlias "/monDossier/monAlias"
<Directory "/monDossier/monAlias">
    Options FollowSymLinks
    AllowOverride All
    Order allow,deny
    Allow from all
</Directory>

l'accès à http://localhost/monAlias fonctionne très bien

par contre l'accès à http://localhost/monAlias/monController me renvoie l'erreur suivante :

Code:

The requested URL /monDossier/monAlias/index.php was not found on this server.

Ce qui m'étonne c'est que ce fichier existe bien puisque l' index.php est à la racine du site (choix personnel de ne pas l'avoir mis dans public mais rien est définitif)

fichier .htaccess

Code:

SetEnv APPLICATION_ENV development
     
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} -s [OR]
RewriteCond %{REQUEST_FILENAME} -l [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^.*$ - [NC,PT,L]
RewriteRule ^.*$ index.php [NC,PT,L]

J'ai rajouté les drapeaux PT(passthrough) conformément à ce que j'ai trouvé dans la doc Appache (mais est-ce correct ?)

Doc Apache 2.2 a écrit:

Par défaut, la cible (ou chaîne de substitution) d'une règle RewriteRule est sensée être un chemin de fichier. Avec le drapeau [PT], par contre, elle est traitée comme un URI. Autrement dit, avec le drapeau [PT], le résultat de la règle RewriteRule est passé à nouveau au système de mise en correspondance des URLs avec le système de fichiers, de façon à ce que les systèmes de mise en correspondance basés sur les chemins de fichiers, comme la directive Alias, Redirect, ou ScriptAlias, par exemple, puissent avoir une chance d'accomplir leur tâche.

Si par exemple, vous avez un Alias pour /icons, et une règle RewriteRule qui renvoie vers /icons, vous devez utiliser le drapeau [PT] pour être sûr que l'Alias sera bien évalué.

Code:

Alias /icons /usr/local/apache/icons
RewriteRule /pics/(.+)\.jpg /icons/$1.gif [PT]

Dans l'exemple précédent, en l'absence du drapeau [PT], l'Alias aurait été ignoré, ce qui aurait provoqué une erreur 'File not found'.

Avec le drapeau PT, le drapeau L est implicite : la réécriture s'arrêtera afin de transmettre la requête à la phase suivante du traitement.

Notez que le drapeau PT est implicite dans des contextes de répertoire comme les sections <Directory> ou les fichiers .htaccess. Le seul moyen de contourner ceci consiste à réécrire vers -.

Si quelqu'un a une idée sur la source du problème et/ou comment le résoudre je suis preneur.
Je m'attaquerai aux VirtualHost plus tard wink

Merci d'avance
Patrick

Ma conf :
Apache : 2.2.17
PHP : 5.3.4
Système d'exploitation: MAC OS X 10.6.8

Dernière modification par patstey (28-07-2011 15:55:52)

Hors ligne

 

#2 28-07-2011 15:55:20

patstey
Membre
Date d'inscription: 21-01-2009
Messages: 15

Re: [résolu] url rewriting et Alias ...

Re-bonjour,

Je pensais avoir convenablement cherché avant de poster et voilà qu'en fouinant un peu en attendant des réponses je tombe sur ce topic -> http://www.z-f.fr/forum/viewtopic.php?id=4828

J'y ai trouvé ma réponse : ajouter la directive RewriteBase dan le .htaccess

ce qui donne :

Code:

SetEnv APPLICATION_ENV development
     
RewriteEngine On
RewriteBase /monAlias/
RewriteCond %{REQUEST_FILENAME} -s [OR]
RewriteCond %{REQUEST_FILENAME} -l [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^.*$ - [NC,L]
RewriteRule ^.*$ index.php [NC,L]

Remarquez que les PT ne servaient pas dans ce cas là.

Désolé pour le dérangement, en espérant que cela puisse aider d'autres personnes wink

Patrick
@+ pour d'autres questions (promis je chercherai un peu plus la prochaine fois)

Hors ligne

 

Pied de page des forums

Propulsé par PunBB
© Copyright 2002–2005 Rickard Andersson
Traduction par punbb.fr

Graphisme réalisé par l'agence Rodolphe Eveilleau
Développement par Kitpages