IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Apache Discussion :

Zend : la réécriture d'URL ne se fait pas ou mal


Sujet :

Apache

  1. #1
    Membre éprouvé

    Homme Profil pro
    Développeur J2EE Senior
    Inscrit en
    Mai 2008
    Messages
    419
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur J2EE Senior
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Mai 2008
    Messages : 419
    Points : 900
    Points
    900
    Par défaut Zend : la réécriture d'URL ne se fait pas ou mal
    Bonjour


    Je dois suivre développement d'un site web extrêmement basique qui est réalisé en php/postgresql par un développeur externe. J'ai un background J2EE, et mes connaissances en PHP/apache/sql sont très superficielles.

    J'ai téléchargé Zend CE, j'y ai déployé le site, j'ai aussi téléchargé pgadmin et j'ai configuré la base de données. Quand je rentre l'adresse du site en local, soit http://localhost/test/, il y a une redirection automatique vers la page http://localhost/test/login, qui m'affiche un magnifique mais un peu lassant "404 not found" comme titre de l'onglet, et dans le corps de la page, "Not Found - The requested URL /test/login was not found on this server."

    J'ai essayé de supprimer le fichier .htaccess, de le renommer, de le bidouiller à l'instinct, etc, mais impossible d'avoir un comportement différent, alors que mon collègue distant qui lui travaille sur un mac (moi sous win XP) dit n'avoir pas de problème.

    Voici les deux fichiers .htaccess que l'on m'a donné pour le test:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    <IfModule !mod_rewrite.c>
        ErrorDocument 404 /index.php
    </IfModule> 
    <IfModule mod_rewrite.c>
    RewriteEngine on
    RewriteBase /test/
    RewriteCond $1 !^(index\.php|styles|css|img|js|robots\.txt)
    RewriteRule ^(.*)$ index.php/$1 [L]
    </IfModule>
    et
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Options +FollowSymlinks
    RewriteEngine on
     
    <IfModule mod_rewrite.c>
      Options +FollowSymLinks
      RewriteEngine on
      RewriteBase /
      RewriteCond %{REQUEST_FILENAME} !-f
      RewriteCond %{REQUEST_FILENAME} !-d
      RewriteRule ^(.*)$ test/index.php?/$1 [QSA,L]
    </IfModule>
    Le fichier index.php, pour autant que j'ai pu en comprendre a l'air copié collé d'un modèle de base. A la fin, il n'y a pas de balise fermante "?>", mais ça se termine abruptement et juste avant il y a marqué
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    require_once BASEPATH.'codeigniter/CodeIgniter'.EXT;
    J'ai fait une recherche windows dans le corps des fichiers, mais impossible d'en trouver un contenant une redirection vers login.php, alors que cette page existe dans l'arborescence. Pour finir, voici le log d'apache qui est toujours le même avec des petites variations dans les numéros de fin de ligne (404 et 302 sont invariants):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    127.0.0.1 - - [20/Aug/2010:19:30:58 +0200] "GET /test/ HTTP/1.1" 302 5128
    127.0.0.1 - - [20/Aug/2010:19:30:58 +0200] "GET /test/login HTTP/1.1" 404 214
    Avez vous une idée pour me sortir de là? C'est surement un truc très bête, mais je manque de temps pour me mettre à niveau techniquement...

    Merci d'avance!

  2. #2
    Rédacteur
    Avatar de _Mac_
    Profil pro
    Inscrit en
    Août 2005
    Messages
    9 601
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 9 601
    Points : 12 977
    Points
    12 977
    Par défaut
    Y a quoi dans le fichier error_log ? Si une réécriture a été faite, tu devrais y voir le résultat de cette réécriture et qui provoque l'erreur 404.

  3. #3
    Membre éprouvé

    Homme Profil pro
    Développeur J2EE Senior
    Inscrit en
    Mai 2008
    Messages
    419
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur J2EE Senior
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Mai 2008
    Messages : 419
    Points : 900
    Points
    900
    Par défaut
    Voici ce que dit le fichier d'erreurs:
    [Mon Aug 23 09:57:28 2010] [error] [client 127.0.0.1] File does not exist: C:/Program Files/Zend/Apache2/htdocs/test/login
    Donc typiquement ça a l'air d'être la réécriture d'urls qui n'a pas lieu. Pourtant je suis allé vérifier dans C:\Program Files\Zend\Apache2\modules que mod_rewrite.so existait bien, et dans C:\Program Files\Zend\Apache2\conf\httpd.conf que la ligne LoadModule rewrite_module modules/mod_rewrite.so existait bien, donc je ne comprend pas pourquoi j'ai une erreur...

  4. #4
    Rédacteur
    Avatar de _Mac_
    Profil pro
    Inscrit en
    Août 2005
    Messages
    9 601
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 9 601
    Points : 12 977
    Points
    12 977
    Par défaut
    Ton fichier .htaccess se trouve dans quel répertoire ?

  5. #5
    Membre éprouvé

    Homme Profil pro
    Développeur J2EE Senior
    Inscrit en
    Mai 2008
    Messages
    419
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur J2EE Senior
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Mai 2008
    Messages : 419
    Points : 900
    Points
    900
    Par défaut
    Dans le répertoire C:/Program Files/Zend/Apache2/htdocs/test
    Le même répertoire que celui qui contient index.php.

    BTW, j'ai aussi essayé de ne pas utiliser de sous-répertoire test et de tout mettre dans htdocs, mais sans voir rien de différent.

  6. #6
    Rédacteur
    Avatar de _Mac_
    Profil pro
    Inscrit en
    Août 2005
    Messages
    9 601
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 9 601
    Points : 12 977
    Points
    12 977
    Par défaut
    OK. Je crois voir le problème. Pour le premier .htaccess que tu as testé, le problème vient en partie du RewriteBase. Faire RewriteBase /test/ n'a de sens que si tu mets le .htaccess à la racine du site. Et quand bien même le RewriteBase serait correct je pense que le RewriteCond $1 n'est pas correct. Je partirais sur le second .htaccess qui me semble mieux au détail près que de la même façon que le premier il est prévu pour être placé à la racine du site à cause du second paramètre de la RewriteRule. Donc avec un .htaccess dans test, je mettrais ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Options +FollowSymlinks
     
    <IfModule mod_rewrite.c>
      RewriteEngine on
      RewriteBase /
      RewriteCond %{REQUEST_FILENAME} !-f
      RewriteCond %{REQUEST_FILENAME} !-d
      RewriteRule ^(.*)$ index.php?/$1 [QSA,L]
    </IfModule>

  7. #7
    Membre éprouvé

    Homme Profil pro
    Développeur J2EE Senior
    Inscrit en
    Mai 2008
    Messages
    419
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur J2EE Senior
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Mai 2008
    Messages : 419
    Points : 900
    Points
    900
    Par défaut
    Merci beaucoup de ta réponse qui rejoint celle que j'ai fini par trouver tout seul à l'instant:

    1) change the line "AllowOverride none" to "AllowOverride All" in the httpd.conf.
    2) Ajouter un point d'interrogation entre "index.php" et "/$1"

    Sources :
    http://devzone.zend.com/article/4295
    http://www.terencechang.com/2008/08/...hp-5-apache-2/

    Résolu

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réécriture d'url dans fichier ASP
    Par Ishizaki dans le forum ASP
    Réponses: 1
    Dernier message: 22/02/2007, 11h44
  2. ASP + Access, réécriture d'URL
    Par duchesnef dans le forum ASP
    Réponses: 5
    Dernier message: 14/09/2006, 09h54
  3. La réécriture d'URL avec Apache
    Par agencep dans le forum Langage
    Réponses: 3
    Dernier message: 25/04/2006, 16h37
  4. Réécriture d'url en asp.
    Par éelise dans le forum ASP
    Réponses: 4
    Dernier message: 13/12/2005, 08h53

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo