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 :

Références sans extensions chez free ?


Sujet :

Apache

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    67
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 67
    Points : 51
    Points
    51
    Par défaut Références sans extensions chez free ?
    Bonjour,
    j'ai un site HTML basique, mais j'ai décidé de passer au php pour les includes (pour me permettre d'inclure le menu sur toutes les pages).

    Mon problème est que cela me donne des extensons en .php et non plus .html.
    Ce qui implique que les quelques référencement vers mon site seront érroné.

    J'ai donc pensé à faire du urlrewriting (de php vers html, il n'y a que l'extension à modifier) mais je suis tombé la dessus :
    http://www.la-grange.net/w3c/Style/URI#remove

    C'est vrai que si le site est ammené à évoluer (c'est quand même le 3eme changement majeur) ca peut être pratique de ne pas avoir d'extension dans les URL.

    Je suis hébergé chez free, j'aimerai donc savoir si leur serveur gère (et comment) les URL sans extensions.

    Merci

  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
    Il y a au moins 2 méthodes pour y arriver : la méthode négociation de contenu et la méthode réécriture d'URL, la méthode la plus simple étant la première. Tu peux la tester rapidement : place un fichier .htaccess à la racine de ton site (ou d'un répertoire quelconque) contenant ceci :
    Ensuite, crée dans le répertoire où tu as mis ton .htaccess un fichier toto.html et un autre titi.php (contenant un bout de code PHP) et teste : http://monsite.free.fr/chemin/toto et http://monsite.free.fr/chemin/titi. Si ça marche pas, dis-nous, on te trouvera des règles de réécriture.

    Du détail, du détail, du détail !!!
    Revenons à la source : lisons la documentation et les fichiers de trace, la réponse à notre problème s'y trouve sans doute

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    67
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 67
    Points : 51
    Points
    51
    Par défaut
    Merci c'est genial ca fonctionne, ca a l'air d'être un bon début.
    toto ouvre toto.html et titi ouvre titi.php.

    Il ne me reste plus qu'a faire un urlrewriting en passant par un error.php pour traiter les URL et enlever les extensions ?

    Je débute d'hier en php...

    Merci

  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
    Citation Envoyé par shaiton Voir le message
    Il ne me reste plus qu'a faire un urlrewriting en passant par un error.php pour traiter les URL et enlever les extensions ?
    Je sais pas trop. En fait, un truc me gêne : admettons que la vieille URL soit http://.../toto.html. Tu veux qu'elle soit désormais connue en tant que http://.../toto. OK, très bien. Sauf que, en fait, tu as encore un fichier toto.html, quelque soit la raison. La vieille URL est donc toujours valable stricto senso puisqu'elle pointe vers un fichier qui existe

    En fait, on peut imaginer le mécanisme de redirection suivant géré par Apache directement (le coup de la gestion des erreurs 404 me paraît plutôt limite de manière générale et dans ton cas) : dès qu'il y a une URL se terminant en .html, on fait une redirection permanente vers la même URL sans .html, d'où à rajouter dans le .htaccess à la racine de ton site :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    RewriteEngine on
    RewriteRule ^(.*)\.html$ /$1 [R=301,L]

    Du détail, du détail, du détail !!!
    Revenons à la source : lisons la documentation et les fichiers de trace, la réponse à notre problème s'y trouve sans doute

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    67
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 67
    Points : 51
    Points
    51
    Par défaut
    Ah je crois que je me suis mal exprimé.
    le ...toto.html n'existe plus sur mon serveur, il est remplacé par toto.php

    Le problème c'est qu'il existe des référencement extérieurs qui pointent toujours sur toto.html

    Le truc du erreur 404 c'est parce que free ne gère plus les urlewriting (enfin, sauf de cette manière) d'après ce que j'ai lu.

    Je testerai ca dans quelques heures, j'ai cours

  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
    Free ne gère plus l'URL rewriting ??

    Effectivement, je n'avais pas bien compris. Tu peux essayer ça, mais si Free n'accepte plus...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    RewriteEngine on
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} \.html$
    RewriteRule ^(.*)\.html$ /$1.php [L]

    Du détail, du détail, du détail !!!
    Revenons à la source : lisons la documentation et les fichiers de trace, la réponse à notre problème s'y trouve sans doute

  7. #7
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    67
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 67
    Points : 51
    Points
    51
    Par défaut
    Si j'ai bien compris ce code faut le mettre dans le .htaccess
    D'ou :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Options +MultiViews
    RewriteEngine on
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} \.html$
    RewriteRule ^(.*)\.html$ /$1.php [L]
    Et j'obtiens une erreur 500.

    J'ai lu a divers endroit que l'URL rewriting chez free fallait passer par l'astuce du erreur 404 ...

    Je m'y met.
    Mais si il y a plus "conforme", je suis à l'écoute

    bon après j'aurais aussi à configurer mon serveur apache mais c'est au second plan ...

  8. #8
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    67
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 67
    Points : 51
    Points
    51
    Par défaut
    J'ai pensé à quelque chose de plus simple.
    si j'ai bien compris ce qui est expliqué

    Mes pages qui ne sont pas trouvées, passeront par le script erreur404.php pour modifier l'URL.

    Pourquoi ne pas modifier dans l'url, directement le".html" en ".php" ?
    Du coup plus la peine d'enlever l'extension (même si ça fonctionnait en partie).

    J'ai donc seulement dans mon .htaccess
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ErrorDocument 404 /erreur404.php
    et dans ma page erreur404.php
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    <?php
    $URL = $_SERVER["REQUEST_URI"];
    $URL = str_replace("html", "php", $URL ) ; 
    header("HTTP/1.0 200 OK");
    header('Location: $URL); 
    ?>
    Mais ça ne marche pas ... je suppose que ca bloque au niveau des header(),
    j'ai modifié les arguments sans trop savoir ce qu'elle fait en faite,
    à l'origine c'était
    header('Location: /article.php?id='.$id); // on fait une redirection code 200 vers /article.php?id=1
    Bon, en dernier lieu j'aimerai savoir si c'est moi qui vérifie mal ...
    je test sur mon ftp free qui a toujours mon site en .html (la nouvelle version n'est pas encore uploadée). je demande donc
    unePageQuiNexistePas.html , il devrait me dire que unePageQuiNexistePas.php est introuvable non ?
    j'ai comme message d'erreur
    Parse error: syntax error, unexpected $end in /mnt/140/sdc/6/2/user/erreur404.php on line 9
    Merci pour tout éclaircissements

  9. #9
    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
    Je ne sais pas pour la dernière erreur, mais pour faire une redirection, c'est pas un code 200 qu'il faut mettre, c'est 301 (redirection permanente) ou 302 (redirection temporaire). C'est peut-être ça le pb.

    Après, le pb avec ton erreur404.php c'est qu'il va boucler :
    1. tu demandes unePageQuiNexistePas.php
    2. Apache appelle erreur404.php
    3. Dans erreur404.php, $URL vaut unePageQuiNexistePas.php
    4. Tu remplaces html par php dans dans $URL : ça ne change rien ($URL == unePageQuiNexistePas.php)
    5. Tu rediriges vers unePageQuiNexistePas.php
    6. Ca recommence...

    Du détail, du détail, du détail !!!
    Revenons à la source : lisons la documentation et les fichiers de trace, la réponse à notre problème s'y trouve sans doute

  10. #10
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    67
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 67
    Points : 51
    Points
    51
    Par défaut
    Oui ok merci, je vais mettre la version php en ligne, puis tester la correction.
    Si les liens sont "absents" un petit moment ce n'est pas grave

    Merci

  11. #11
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    67
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 67
    Points : 51
    Points
    51
    Par défaut
    Bon bah je n'arrive pas a faire fonctionner cette methode ...
    pour ce qui est de la boucle, je n'ai que quelque pages déjà référencées, donc un simple test me permettrait de vérifier qu'on chercher bien une page qui existait.

    mon script php est tellement simple que je ne vois pas ce qui pourrait être faut ..
    à part le header ...

    Pas mieux que ce que j'ai fais ?
    merci

  12. #12
    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
    Faut y aller par étape. Tu peux déjà commencer avec le script suivant sans redirection pour vérifier que tu récupères bien ce qu'il faut :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    <pre>
    <?php
    $URL = $_SERVER["REQUEST_URI"];
    echo $URL."\n";
    $URL = str_replace("html", "php", $URL ) ; 
    echo $URL."\n";
     
    // On verifie l'en-tete de redirection
    echo "Location: http://".$_SERVER["HTTP_HOST"].$URL;
    ?></pre>
    Ensuite, si c'est OK, fais la redirection :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    <?php
    $URL = $_SERVER["REQUEST_URI"];
    $URL = str_replace("html", "php", $URL ) ; 
     
    // Sans mettre de code
    header("Location: http://".$_SERVER["HTTP_HOST"].$URL);
    ?>

    Du détail, du détail, du détail !!!
    Revenons à la source : lisons la documentation et les fichiers de trace, la réponse à notre problème s'y trouve sans doute

  13. #13
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    67
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 67
    Points : 51
    Points
    51
    Par défaut
    Tout d'abord merci d'avoir suivit mon post aussi rapidement.

    Pour les echo, j'avais deja testé l'echange de "html" par "php" fonctionnait.
    C'est bien la dernière ligne que j'avait fausse.

    Ca marche nickel Merci beaucoup


    Pour resumer, le code dans le .htaccess reste le même,

    et pour le erreur404.php j'ai
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    <?php
    $URL = $_SERVER["REQUEST_URI"];
    $URL = str_replace("html", "php", $URL ) ; 
    header("HTTP/1.0 301 OK");
    header("Location: http://".$_SERVER["HTTP_HOST"].$URL);
    ?>

    Bon, il ne me manque plus qu'à redirigier sur une réel erreur 404 lorsque la page demandée est introuvable, parce que la ca faire tourner en rond, comme tu l'a fais remarqué précédemment.
    Mais pour ca j'y arriverai tout seul, je connais bien le C c'est presque pareil :p

    Merci encore, et bonne nuit

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

Discussions similaires

  1. Récupérer un nom de fichier sans extension
    Par OxN dans le forum Général Java
    Réponses: 13
    Dernier message: 01/08/2011, 16h13
  2. [MySQL] Activer l'extension ZIP chez Free
    Par Deciprog dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 12/03/2009, 16h42
  3. Extension PHP Ming disponible chez Free ?
    Par Flameo dans le forum Serveurs (Apache, IIS,...)
    Réponses: 2
    Dernier message: 24/04/2008, 17h26
  4. ASP - Nom de la page courante sans extension
    Par Laurent91300 dans le forum ASP
    Réponses: 3
    Dernier message: 07/10/2005, 08h52
  5. Pb de session chez free
    Par kernel57 dans le forum Langage
    Réponses: 2
    Dernier message: 01/09/2005, 14h07

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