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 :

[URL rewriting] Pages de profil pour les utilisateurs


Sujet :

Apache

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    901
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 901
    Points : 79
    Points
    79
    Par défaut [URL rewriting] Pages de profil pour les utilisateurs
    Bonjour,

    J'aurais une autre petite question STP concernant les redirections apache..

    je suis entrain de creer une page "profil" pour utilisateurs. Je compte bien utiliser les url rewriting.
    j'ai fait quelques testes avec juste www.site.com/nom-utilisateur
    en utilisant le code suivant:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    RewriteRule ^([a-z0-9.-]{6,})/$ /account/profile.php?nickname=$1 [QSA,L]
    mais malheureusement tous mes repertoires existants sont redirigés vers profile.php

    la solution que j'ai en tete est d'utiliser une url comme www.site.com/profile/nom-utilisateur, mais je trouve que c'est un peu long.

    MErci encore une fois

  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
    Citation Envoyé par redah75 Voir le message
    mais malheureusement tous mes repertoires existants sont redirigés vers profile.php
    C'est parfaitement normal : le filtre ^([a-z0-9.-]{6,})/$ matche beaucoup d'URL, pas seulement celles des profils utilisateurs. La seule solution c'est de faire comme tu le suggères : ajouter dans l'URL un truc en plus qui permet de reconnaître à coup sûr que c'est une URL de profil, comme par exemple ajouter un /profil/ (ou /profile/) devant. Et donc non, ce n'est pas trop long, c'est la bonne solution. Et si tu regardes bien, c'est comme cela que fonctionne ce forum mais avec un discriminant beaucoup plus court (/forums/u... avec ... des chiffres)

    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 régulier
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    901
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 901
    Points : 79
    Points
    79
    Par défaut
    Bonjour _Mac_ et merci pour ta reponse

    je viens tout juste de trouver une solution, qui pour l'instant fonctionne bien a un petit detail prêt!
    voici ce que j'ai mis:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    RewriteCond %{REQUEST_URI} !(account|help|forums) [NC]
    RewriteRule ^([a-z0-9-]+)/$ /account/profile.php?nickname=$1 [QSA,L]
    qu'est ce que tu en penses??

    sinon, ça deconne un peu a cause de cette règle qui force un slash a la fin
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    RewriteCond %{REQUEST_URI} /+[^\.]+$
    RewriteRule ^(.+[^/])$ %{REQUEST_URI}/ [R=301,L]
    si j'ai un utilisateur site.com/prenom.nom le slash ne se rajoute pas car la regle pense que c'est un fichier et par conséquent j'obtient une erreur 404

    Aurais tu une solution a ca??

    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
    Je ne comprends pas vraiment comment fonctionne la règle qui ajoute un / à la fin, ce n'est vraiment pas la manière la plus classique de l'écrire. En fait, la RewriteCond fait que seules les URL qui ne contiennent pas de . après le dernier / sont réécrite avec un / à la fin. Alors forcément, quand tu arrives avec l'URL /prenom.nom qui contient un ., le / n'est pas ajouté. Comme je ne comprends pas vraiment pourquoi la règle est écrite de cette manière, j'ai du mal à expliquer quoi corriger, si ce n'est dire qu'il faut supprimer la RewriteCond...

    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 régulier
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    901
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 901
    Points : 79
    Points
    79
    Par défaut
    Je t'avoue que j'ai eu du mal a la comprendre aussi.
    mais apres tout, est ce bien important de rajouter un slash a la fin??
    je pense avoir lu qlq part que c'est important pour le referencement...!

    j'ai trouvé cette regle sur plusieurs site comme par exemple celui la:
    http://boolean.co.nz/blog/force-trai...-htaccess/684/


    J'aurais encore une autre question hors sujet
    je viens de creer un forum fait maison, en faisant des tests, je me suis rendu compte que je peux tres vite etre bombardé de mail de notification en tant que modérateur ou meme en tant qu'utilisateur en cas de reponses multiples.
    j'ai cherche sur internet mais je n'ai pas trouvé comment "retarder" ou reduire le nombre d'envoi de mail!!
    est ce que les taches Crons sont le seul moyen???

  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
    Tout dépend de la manière dont tu envoies tes mails. Si l'envoi de mail se fait par code PHP, cron ne t'aidera pas. En revanche, si ton code PHP stocke en base de données par exemple les mails à envoyer et que c'est plus tard un batch cron qui passe et qui fait l'envoi, ce batch peut optimiser l'envoi. Mais dans tous les cas, c'est du code à écrire : soit dans la page PHP pour décider ou non d'envoyer un mail ; soit dans un script Shell (ou PHP) exécuté par cron pour fusionner les mails à envoyer, etc. Pas de solution magique prête à l'emploi, dans tous les cas.

    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 régulier
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    901
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 901
    Points : 79
    Points
    79
    Par défaut
    OK, merci pour ces précisions. je comprends donc qu'il n'y a pas de solution miracle

    Et sinon pour forcer le slash a la fin aurais tu un meilleur code??
    Merci

  8. #8
    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
    Pas vraiment, vu que je ne comprends pas bien la règle.

    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

  9. #9
    Membre régulier
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    901
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 901
    Points : 79
    Points
    79
    Par défaut
    Non, je parlais d'une autre règle pour cela

    j'avais essaye avec les RewriteCond %{REQUEST_FILENAME} -f
    mais ca ne marchait pas!

  10. #10
    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
    Ce que je veux dire c'est que la règle a été écrite d'une façon tellement "étrange" que je me dis que la remplacer par une version plus classique (avec RewriteCond %{REQUEST_FILENAME} -f par exemple) n'ira pas bien. Et visiblement, c'est le cas puisque tu viens de tester ! Et donc si on ne comprend pas bien comment elle marche et à quoi elle sert, on n'arrivera pas à dire par quoi la compléter ou remplacer pour que ça marche pour tous les cas.

    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

  11. #11
    Membre régulier
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    901
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 901
    Points : 79
    Points
    79
    Par défaut
    mais au fait si tu as deja une règle pour le slash a la fin qui fonctionne bien, je peux completement remplacer ce que j'ai...

  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
    Celle que je connais, c'est celle que tu as déjà essayé d'utiliser :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_URI} !/$
    RewriteRule (.*) $1/ [R]

    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 régulier
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    901
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 901
    Points : 79
    Points
    79
    Par défaut
    d'accord, je pensais que tu avais une autre regle magique..
    en effet, la regle que tu m'as envoye ne charge pas les css entre autres, et ma cosole m'affiche plusieurs erreur 404...

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

Discussions similaires

  1. Réponses: 20
    Dernier message: 01/07/2014, 14h26
  2. [AJAX] la page clignotte atrocement pour les raffraichissements
    Par keumlebarbare dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 19/10/2006, 17h14
  3. Pour les utilisateurs réguliers de DELPHI
    Par masta94 dans le forum Delphi
    Réponses: 5
    Dernier message: 13/07/2006, 14h16

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