Joujou avec les url

bonjour a tous,
je voudrais savoir ce qui se fait de plus ( rapide principalement ) pour jouer avec des url :
de l’url rewritting, ou un ptit script en php comme ça par exemple :

<?php $addr = Substr($_SERVER["HTTP_HOST"],0,strpos($_SERVER["HTTP_HOST"],".")); if($addr=='truc') header("location : ".$_SERVER["HTTP_HOST"]."?page=truc"); // Etc .. ?>
ou il existe encore plus propre / simple / rapide … :stuck_out_tongue:
merci avous.
bon je detaille un peu quand meme le but est par exemple d’arriver a : forum.code-libre.org/lire/543/
donc le traitement de la premiere partie de l’url n’est pas tout ce qu’il faudra effectuer.

merci d’avance

[quote=« fser, post:1, topic: 25704 »]bonjour a tous,
je voudrais savoir ce qui se fait de plus ( rapide principalement ) pour jouer avec des url :
de l’url rewritting, ou un ptit script en php comme ça par exemple :

<?php $addr = Substr($_SERVER["HTTP_HOST"],0,strpos($_SERVER["HTTP_HOST"],".")); if($addr=='truc') header("location : ".$_SERVER["HTTP_HOST"]."?page=truc"); // Etc .. ?>
ou il existe encore plus propre / simple / rapide … :stuck_out_tongue:
merci avous.
bon je detaille un peu quand meme le but est par exemple d’arriver a : forum.code-libre.org/lire/543/
donc le traitement de la premiere partie de l’url n’est pas tout ce qu’il faudra effectuer.

merci d’avance[/quote]

Ca c’est marrant, je viens juste de me poser un peu la même question (sauf que moi j’avais déjà décidé d’utiliser mod_rewrite). Hop: http://www.ilovejackdaniels.com/cheat-shee…ite-cheat-sheet

merci je regarde ça !

Up

Pour des méthodes clients: http://www.sitepoint.com/article/search-engine-friendly-urls

Déterrage de thread : je me demande encore !
Car en fait j’ai utilisé un peu le mod rewrite, mais c’est super chiant de faire ça a la main.
Donc soit les bons tutos se cachent, soit je pige pas.

Est-il possible par exemple de faire en sorte de faire des regles comme ça :

[quote]RewriteRule ^/(.) index.php?page=$1 [un truc]RewriteRule <>/([(.),]) … [autre truc]
…[/quote]

Pour pouvoir espere avoir une url genre http://monsite.tld/module/arguments1,argum…e-ici.extension ou encore http://monsite.tld/module/sousmodule/souss…teici.extension ce genre de choses sans avoir a tout prévoir des qu’on ajoute une ligne ?

Car quand je vois les htaccess (dotclear et joomla par exemple) ça se résume j’ai l’impression à faire tout faire a php (en gros).

help ?!?

[quote=“fser, post:5, topic: 25704”]Déterrage de thread : je me demande encore !
Car en fait j’ai utilisé un peu le mod rewrite, mais c’est super chiant de faire ça a la main.
Donc soit les bons tutos se cachent, soit je pige pas.

Est-il possible par exemple de faire en sorte de faire des regles comme ça :
Pour pouvoir espere avoir une url genre http://monsite.tld/module/arguments1,argum…e-ici.extension ou encore http://monsite.tld/module/sousmodule/souss…teici.extension ce genre de choses sans avoir a tout prévoir des qu’on ajoute une ligne ?

Car quand je vois les htaccess (dotclear et joomla par exemple) ça se résume j’ai l’impression à faire tout faire a php (en gros).

help ?!?[/quote]

mod_rewrite t’offrira une plus grande flexibilité que n’importe quelle autre solution. Par contre, c’est un peu plus tendu du slip à mettre en place et ca ne marche pas chez tous les hébergeurs. La solution PHP elle, si.

Ma solution a moi qui fait ce que tu veux (à base de mod_rewrite [1 ligne] et de php des famille) :

Et dans le php, j’ai d’abord deux fonctions pour traiter mes urls (désolé pour la doc en anglais mais je c/c tel quel parce que j’ai la flemme):

[code]//fill $url_elems with $pure_url (/elem1/elem2///elem3 => array(0 => ‘elem1’, 1 => ‘elem2’, 2 => ‘elem3’))
//$clean_url receive the url cleaned up from the messy ///
function get_url_elems($pure_url, $url_elems, $clean_url)
{
$url_elems = array();
$clean_url = ‘/’;
preg_match_all("/(/([^/]+)/)/s", $pure_url, $row_matches);
foreach ($row_matches[0] as $key => $row_match)
{
$row_matches[2][$key] = strtoupper($row_matches[2][$key]);
$clean_url .= str_replace(’/’, ‘’, $row_matches[2][$key]).’/’;
array_push($url_elems, str_replace(’/’, ‘’, $row_matches[2][$key]));
}
return ($url_elems);
}

//make up an url $base_url/elem1/elem2/elem3/, $elems is either an array or a single element
function make_url($base_url, $elems)
{
$url = $base_url;
foreach ((array)$elems as $elem)
{
$url .= $elem.’/’;
}
return ($url);
}[/code]
De manière basique, make_url permet de “créer” tes url, alors que get_url_elems est appelé une fois en début de page pour savoir où on est.

Donc pour aller a tonsite.com/truc/bidule/tagada/tapage-machin.chouette, tu fais d’abord un:

$url = make_url('tonsite.com', array('truc', 'bidule', 'tagada', 'tapage-machin.chouette')); <a href="<?=$url?>">Cliquez ici !</a>

Ensuite dans la page index.php

[code]$url_set = array();
$current_url = ‘’;
get_url_elems($_GET[‘do’], &$url_set, &$current_url);
// $current_url recoit l’url “nettoyée” des / superflus
// $url_set est un tableau contenant les diverses parties de l’url, en majuscule

switch ($url_set[0]) {
case ‘TRUC’:
//etc etc, ici libre à toi si tu t’en sers de regarder dans $url_set[1], puis 2, …
break;
default: break;
}[/code]
Et donc si tu as une url avec des / en trop partout, genre tonsite.com/truc//////bidule//tagada///////tapage-machin.chouette/ ça fonctionne tout de même, et $current_url contiendra la version “propre” au cas où tu en ai besoin. De la même maniere, majuscule/minuscule importent peu.

En esperant que ça aide.

J’aime bien le concept, merci azera!
ça pose pas de problemes avec les dossiers réels au fait ?

si tes dossiers réels ne commencent pas par “index” (préfice utilisé dans la rewriterule), alors non.

han, que jsuis con >_<