Précédent   Forum des professionnels en informatique > PHP > Langage > Fonctions
Fonctions Forum d'entraide sur les fonctions PHP. Avant de poster -> FAQ fonctions et Sources diverses
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 08/05/2008, 20h12   #1
Nouveau Membre du Club
 
Inscription : juillet 2007
Messages : 117
Détails du profil
Informations forums :
Inscription : juillet 2007
Messages : 117
Points : 25
Points : 25
Par défaut Avoir de belles url

Bonjour,

J'aimerais savoir comment font les framework pour avoir de belles url dans htaccess, exemple avec codeigniter on définit une fonction dans une classe:

Code :
1
2
3
4
5
6
<?php
public function hello()
{
   echo'Hello World !';
}
?>
Et dans le navigateur on appelle cette page: www.site.com/hello et op ca afficher "Hello World !"...

Et-il possible d'avoir un exemple simple et fonctionnel ? ou d'expliquer comment faire?

Merci d'avance.
nesswaw est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/05/2008, 08h58   #2
Membre Expert
 
Homme
Inscription : janvier 2004
Messages : 1 238
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Secteur : Finance

Informations forums :
Inscription : janvier 2004
Messages : 1 238
Points : 1 421
Points : 1 421
cherche sur google ou dans la FAQ les termes "URL Rewriting", tu devrais trouver ton bonheur ;o)
__________________
PHP :
Regle n°1 : mysql_query(...), mysql_connect(...) et mysq_select_db(...) doivent EN DEBUG etre suivies de or die(mysql_error()); (mais jamais en production)
Regle n°2 : Mieux encore : mysql_query($requete) or die("$requete<br/>".mysql_error());
Regle n°3 : echo '<pre>';var_dump($var);echo '</pre>'; affiche le contenu et le type d'une variable.
Publiez vos textes de fantasy et de science-fiction sur http://www.cercledefaeries.com/concours/
Fladnag est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/05/2008, 10h58   #3
Nouveau Membre du Club
 
Inscription : juillet 2007
Messages : 117
Détails du profil
Informations forums :
Inscription : juillet 2007
Messages : 117
Points : 25
Points : 25
Apparement c'est pas de l'url rewrinting, vu que dans le framework il a aucun htaccess, à moins que l'ont peut faire du rewriting en php ??
nesswaw est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/05/2008, 11h13   #4
Membre Expert
 
Inscription : janvier 2007
Messages : 1 452
Détails du profil
Informations personnelles :
Âge : 27
Localisation : France, Paris (Île de France)

Informations forums :
Inscription : janvier 2007
Messages : 1 452
Points : 1 914
Points : 1 914
D'une part tu as de l'url rewriting.
Pour pouvoir envoyer les urls à un controleur, un fichier php.
Ensuite c'est le controleur qui décide quoi faire de l'url.
Dans ton exemple, l'url est directement mis en rapport avec une classe, et une méthode.
Tous les controleurs ne fonctionnent pas ainsi, c'est simplement un mode de fonctionnement choisi, que l'on retrouve souvent dans bien des architectures MVC, et ces architectures MVC utilisent toutes un framework.
kaymak est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/05/2008, 11h14   #5
Membre Expert
 
Homme
Inscription : janvier 2004
Messages : 1 238
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Secteur : Finance

Informations forums :
Inscription : janvier 2004
Messages : 1 238
Points : 1 421
Points : 1 421
on peut... en bidouillant, mais en passant par une page 404, donc un htaccess.

Dans tout les cas, c'est du htaccess.

Sinon, c'est que ton URL est de la forme www.site.com/#hello et dans ce cas là ca peut etre de l'ajax et non de l'URL Rewriting.

Mais a part ca je vois pas.
__________________
PHP :
Regle n°1 : mysql_query(...), mysql_connect(...) et mysq_select_db(...) doivent EN DEBUG etre suivies de or die(mysql_error()); (mais jamais en production)
Regle n°2 : Mieux encore : mysql_query($requete) or die("$requete<br/>".mysql_error());
Regle n°3 : echo '<pre>';var_dump($var);echo '</pre>'; affiche le contenu et le type d'une variable.
Publiez vos textes de fantasy et de science-fiction sur http://www.cercledefaeries.com/concours/
Fladnag est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/05/2008, 12h44   #6
Nouveau Membre du Club
 
Inscription : juillet 2007
Messages : 117
Détails du profil
Informations forums :
Inscription : juillet 2007
Messages : 117
Points : 25
Points : 25
Alors comment je peux faire avec url rewriting, genre :

www.site.com/index.php?p=photo

devient => www.site.com/photo/


www.site.com/index.php?p=photo&id=1

devient => www.site.com/photo/1/

Merci pour vos réponses
nesswaw est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/05/2008, 13h01   #7
Membre Expert
 
Homme
Inscription : janvier 2004
Messages : 1 238
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Secteur : Finance

Informations forums :
Inscription : janvier 2004
Messages : 1 238
Points : 1 421
Points : 1 421
Citation:
Envoyé par Fladnag Voir le message
cherche sur google ou dans la FAQ les termes "URL Rewriting", tu devrais trouver ton bonheur ;o)

...


http://php.developpez.com/faq/index....arbo_virtuelle
__________________
PHP :
Regle n°1 : mysql_query(...), mysql_connect(...) et mysq_select_db(...) doivent EN DEBUG etre suivies de or die(mysql_error()); (mais jamais en production)
Regle n°2 : Mieux encore : mysql_query($requete) or die("$requete<br/>".mysql_error());
Regle n°3 : echo '<pre>';var_dump($var);echo '</pre>'; affiche le contenu et le type d'une variable.
Publiez vos textes de fantasy et de science-fiction sur http://www.cercledefaeries.com/concours/
Fladnag est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/05/2008, 13h12   #8
Nouveau Membre du Club
 
Inscription : juillet 2007
Messages : 117
Détails du profil
Informations forums :
Inscription : juillet 2007
Messages : 117
Points : 25
Points : 25
Trouvé ! enfait c'est super simple

www.site.com/index.php?p=photo

RewriteRule ^(photo)$ index.php?p=$1

devient : www.site.com/photo

Mais maintenant si je vx rajouter une page( index.php?p=news), je dois rajouter une ligne dans mon htaccess ou il y un moyen de prendre dynamiquement la chaine qui se trouve apres index.php?='chaine' ??

Merci
nesswaw est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/05/2008, 14h51   #9
Membre du Club
 
Avatar de Lancelot du Lac
 
Inscription : février 2008
Messages : 89
Détails du profil
Informations forums :
Inscription : février 2008
Messages : 89
Points : 53
Points : 53
Envoyer un message via MSN à Lancelot du Lac
Code :
RewriteRule ^(.+)$ index.php?p=$1
Le point veut dire nimporte quel caractère, le signe plus veut dire une occurence ou plus de ce qui précède.

Parfois ça peut être sympa de se de faire en sorte qu'il y ait une extension dans l'adresse, comme ça tu fais croire que ton site est statique:

Code :
RewriteRule ^(.+)\.html$ index.php?p=$1
__________________
*** les Contrées du rêve ***
Le site de l'imaginaire uchronique
Lancelot du Lac est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/05/2008, 14h59   #10
Membre du Club
 
Avatar de Lancelot du Lac
 
Inscription : février 2008
Messages : 89
Détails du profil
Informations forums :
Inscription : février 2008
Messages : 89
Points : 53
Points : 53
Envoyer un message via MSN à Lancelot du Lac
Autre méthode qui tient en une ligne:

Code :
RewriteRule ^(photo|news)$ index.php?p=$1
La barre verticale veut dire "ou," donc tu pourras ajouter d'autres chaînes et le tout tiendra toujours en une ligne.

Par rapport au précédent, c'est moins général mais c'est utile si tu as d'autres pages dans le même dossier, et que tu ne veux pas que celles-là soient rendues inaccessibles par l'URL rewriting...

Edit: autre cas, tu veux que le rewriting s'appliquer à toutes les adresses sauf, par exemple, "links" ou "disclaimer." Tu peux essayer quelque chose du style:

Code :
RewriteRule ^((?!links|disclaimer).+)$ index.php?p=$1
A tester et débugger si nécessaire, je ne sais pas si les assertions marchent dans les expressions rationnelles d'Apache et personnellement je n'ai jamais rien fait de ce style.
__________________
*** les Contrées du rêve ***
Le site de l'imaginaire uchronique
Lancelot du Lac est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/05/2008, 05h04   #11
Invité régulier
 
Inscription : novembre 2005
Messages : 27
Détails du profil
Informations forums :
Inscription : novembre 2005
Messages : 27
Points : 7
Points : 7
Par défaut pour codeigniter

Non non, codeigniter n'a pas de fichier .htaccess dans la mesure ou il ne réécrit pas les URL.

C'est plus complexe que ça... en faite non, pas tant que ça.
Un script s'occupe de décomposer l'URL suivant les / , et ensuite de cherche le bon fichier.

Donc, le premier segment est la classe (qui porte le même nom que le fichier, mais avec une majuscule), le deuxième segment est la méthode, le troisième et les autres les paramètres.

Donc, si j'entre "monsite.php/index.php/blog/commentaire/1" ce n'est pas du rewriting d'URL, mais une URL propre d'origine.

Dans ce cas, le framework décompose l'URL (explode), cherche le fichier "blog.php" et l'exécute, en sachant que j'appelle la fonction qui affiche les commentaires et que je passe a cette fonction l'argument "1" qui représente disons l'id du com.

Edit :

Oups un oubli et une correction.

Par défaut, codeIgniter n'a pas de .htaccess. Il faut donc toujours écrire l'url avec index.php.

Si tu veux supprimer l'index.php, il faut effectivement un .htacces avec ceci dedans.

Code :
1
2
3
RewriteEngine on
RewriteCond $1 !^(index\.php|images|robots\.txt)
RewriteRule ^(.*)$ /index.php/$1 [L]
Après, tu peu, juste en passant par le fichiers de config, ajouter l'extension que tu veux à la fin de l'url. '.php; .html; .truc etc.)

Et tu peu même avoir les URL sous la forme classique "index.php?c=top&m=moumoute" !
mecy est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 15h55.


 
 
 
 
Partenaires

Hébergement Web