solution htaccess free ???

solution htaccess free ??? - PHP - Programmation

Marsh Posté le 09-04-2006 à 18:00:30    

Je veux utiliser la reecriture d'url chez free.
Le probleme c'est que chez Free le .htaccess ne fonctionne pas. Il engendre l'erreur 500.. :cry:  
J'ai chercher et encore chercher sur le net et j'arrive pas a trouvé un véritable solution.
Mais j'ai trouvé un debut de reponce  :wahoo:  
Une reponse facile ''changer d’hébergeur'', mais c'est pas un site pro que je fait, juste un site pour partager mes passion et mes competence  ;)  
 
Il faut rectifié quelques paramaitre dans le code que j'ai trouvé. Mais, je ne suis malheureusement pas assez forte en php pour le faire moi même  :(  
 
Normalement le code génère des url de la forme /?no_article/Mon-titre-d-article  le ? indique un code php. En fait, c’est un appel à un fichier index.php qui retransmet les pages. c'est un code cree a la base pour les sites fait avec Spip. Donc voila l'origine de mon probleme, puisque je n'utilise pas Spip, mais que je souhaite faire moi m^me mes pages.
 
Tout comme la réécriture d’URL native de SPIP il faut copier le code suivant dans un fichier inc-url :

Code :
  1. <?php
  2. /***************************************************************************\
  3. *  SPIP, Systeme de publication pour l'internet                           *
  4. *                                                                         *
  5. *  Copyright (c)      2005                                                *
  6. *  balluche.free.fr                                                       *
  7. *                                                                         *
  8. *  URL rewriting même si non géré par apache (serveur free par ex.)       *
  9. *                                                                         *
  10. *                                                                         *
  11. *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
  12. *  Pour plus de details voir le fichier COPYING.txt ou l'aide en ligne.   *
  13. \***************************************************************************/
  14. // executer une seule fois
  15. if (defined("_INC_BALLUCHE" )) return;
  16. define("_INC_BALLUCHE", "1" );
  17. /*
  18. - Comment utiliser ce jeu d'URLs ?
  19. Déplacez le fichier index.php et inc-urls-balluche.php3 à la racine de votre de site
  20. Definissez ensuite dans ecrire/mes_options.php3 :
  21. type_urls = 'balluche';
  22. SPIP calculera alors ses liens sous la forme "/?no_article/Mon-titre-d-article".
  23. */
  24. function _generer_url_propre($type, $id_objet) {
  25. $table = "spip_".$type."s";
  26. $col_id = "id_".$type;
  27. // Auteurs : on prend le nom
  28. if ($type == 'auteur')
  29.  $champ_titre = 'nom AS titre';
  30. else
  31.  $champ_titre = 'titre';
  32. // D'abord, essayer de recuperer l'URL existante si possible
  33. $result = spip_query("SELECT url_propre, $champ_titre
  34. FROM $table WHERE $col_id=$id_objet" );
  35. if (!($row = spip_fetch_array($result))) return ""; # objet inexistant
  36. // Si l'on n'est pas dans spip_redirect.php3 sur un objet non publie
  37. // ou en preview (astuce pour corriger un url-propre) + admin connecte
  38. // Ne pas recalculer l'url-propre,
  39. // sauf si :
  40. // 1) il n'existe pas, ou
  41. // 2) l'objet n'est pas 'publie' et on est admin connecte, ou
  42. // 3) on le demande explicitement (preview) et on est admin connecte
  43. if (defined('_SPIP_REDIRECT') AND
  44. ($GLOBALS['preview'] OR ($row['statut'] <> 'publie'))
  45. AND $GLOBALS['auteur_session']['statut'] == '0minirezo')
  46.  $modif_url_propre = true;
  47. if ($row['url_propre'] AND !$modif_url_propre)
  48.  return $row['url_propre'];
  49. // Sinon, creer l'URL
  50. include_ecrire("inc_filtres.php3" );
  51. include_ecrire("inc_charsets.php3" );
  52. $url = translitteration(corriger_caracteres(
  53.  supprimer_tags(supprimer_numero(extraire_multi($row['titre'])))
  54.  ));
  55. $url = @preg_replace(',[[:punct:][:space:]]+,u', ' ', $url);
  56. // S'il reste des caracteres non latins, utiliser l'id a la place
  57. if (preg_match(",[^a-zA-Z0-9 ],", $url)) {
  58.  $url = $type.$id_objet;
  59. }
  60. else {
  61.  $mots = explode(' ', $url);
  62.  $url = '';
  63.  foreach ($mots as $mot) {
  64.   if (!$mot) continue;
  65.   $url2 = $url.'-'.$mot;
  66.   //if (strlen($url2) > 35) {
  67.   // break;
  68.   //}
  69.   $url = $url2;
  70.  }
  71.  $url = substr($url, 1);
  72.  //echo "$url<br>";
  73.  if (strlen($url) < 2) $url = $type.$id_objet;
  74. }
  75. // Verifier les eventuels doublons et mettre a jour
  76. $lock = "url $type $id_objet";
  77. spip_get_lock($lock, 10);
  78. //$query = "SELECT $col_id FROM $table
  79. // WHERE url_propre='".addslashes($url)."' AND $col_id != $id_objet";
  80. //if (spip_num_rows(spip_query($query)) > 0) {
  81. // $url = $url.','.$id_objet;
  82. //}
  83. // Eviter de tamponner les URLs a l'ancienne (cas d'un article
  84. // intitule "auteur2" )
  85. if ($type == 'article'
  86. AND preg_match(',^(article|breve|rubrique|mot|auteur)[0-9]+$,', $url))
  87.  $url = $url.','.$id_objet;
  88. // Mettre a jour dans la base
  89. $query = "UPDATE $table SET url_propre='".addslashes($url)."' WHERE $col_id=$id_objet";
  90. spip_query($query);
  91. spip_release_lock($lock);
  92. spip_log("Creation de l'url propre '$url' pour $col_id=$id_objet" );
  93. return $url;
  94. }
  95. function generer_url_article($id_article) {
  96. $url = _generer_url_propre('article', $id_article);
  97. if ($url)
  98.  return lire_meta("adresse_site" ) . "?$id_article/$url";
  99. else
  100.  return "article.php3?id_article=$id_article";
  101. }
  102. function generer_url_rubrique($id_rubrique) {
  103. $url = _generer_url_propre('rubrique', $id_rubrique);
  104. if ($url)
  105.  return lire_meta("adresse_site" ) . "?$id_rubrique/-$url-";
  106. else
  107.  return "rubrique.php3?id_rubrique=$id_rubrique";
  108. }
  109. function generer_url_breve($id_breve) {
  110. $url = _generer_url_propre('breve', $id_breve);
  111. if ($url)
  112.  return lire_meta("adresse_site" ) . "?$id_breve/+$url+";
  113. else
  114.  return "breve.php3?id_breve=$id_breve";
  115. }
  116. function generer_url_forum($id_forum, $show_thread=false) {
  117. include_ecrire('inc_forum.php3');
  118. return generer_url_forum_dist($id_forum, $show_thread);
  119. }
  120. function generer_url_mot($id_mot) {
  121. $url = _generer_url_propre('mot', $id_mot);
  122. if ($url)
  123.  return lire_meta("adresse_site" ) . "?$id_mot/+-$url-+";
  124. else
  125.  return "mot.php3?id_mot=$id_mot";
  126. }
  127. function generer_url_auteur($id_auteur) {
  128. $url = _generer_url_propre('auteur', $id_auteur);
  129. if ($url)
  130.  return lire_meta("adresse_site" ) . "?$id_auteur/_${url}_";
  131. else
  132.  return "auteur.php3?id_auteur=$id_auteur";
  133. }
  134. function generer_url_document($id_document) {
  135. if (intval($id_document) <= 0)
  136.  return '';
  137. if ((lire_meta("creer_htaccess" )) == 'oui')
  138.  return "spip_acces_doc.php3?id_document=$id_document";
  139. if ($row = @spip_fetch_array(spip_query("SELECT fichier FROM spip_documents WHERE id_document = $id_document" )))
  140.  return ($row['fichier']);
  141. return '';
  142. }
  143. function recuperer_parametres_url($fond, $url) {
  144. global $contexte;
  145. // Migration depuis anciennes URLs ?
  146. if ($GLOBALS['_SERVER']['REQUEST_METHOD'] != 'POST' &&
  147. preg_match(',(^|/)((article|breve|rubrique|mot|auteur)(\.php3?|[0-9]+\.html)([?&].*)?)$,', $url, $regs)) {
  148.  $type = $regs[3];
  149.  $id_objet = intval($GLOBALS['id_'.$type]);
  150.  if ($id_objet) {
  151.   $func = "generer_url_$type";
  152.   $url_propre = $func($id_objet);
  153.   if ($url_propre
  154.   AND ($url_propre<>$regs[2])) {
  155.    http_status(301);
  156.    // recuperer les arguments supplementaires (&debut_xxx=...)
  157.    //$reste = preg_replace('/^&/','?',
  158.    // preg_replace("/[?&]id_$type=$id_objet/",'',$regs[5]));
  159.    Header("Location: $url_propre$reste" );
  160.    exit;
  161.   }
  162.  }
  163.  return;
  164. }
  165. }
  166. ?>


 
C’est une version légèrement modifiée du fichier inc-urls-propres.php3.
 
Ensuite il faut paramétrer la variable $type_urls du fichier ecrire/mes_options.php3. Pour cela, insérez la ligne suivante dans le fichier ci-dessus.

Code :
  1. $type_urls = 'balluche';


 
Et maintenant pour que çà soit géré, placer dans la racine dans un fichier index.php

Code :
  1. <?php
  2. /***************************************************************************\
  3. *  SPIP, Systeme de publication pour l'internet                           *
  4. *                                                                         *
  5. *  Copyright (c)      2005                                                *
  6. *  balluche.free.fr                                                       *
  7. *                                                                         *
  8. *  URL rewriting même si non géré par apache (serveur free par ex.)       *
  9. *                                                                         *
  10. *                                                                         *
  11. *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
  12. *  Pour plus de details voir le fichier COPYING.txt ou l'aide en ligne.   *
  13. \***************************************************************************/
  14. /*
  15. - Comment utiliser ce jeu d'URLs ?
  16. Déplacez le fichier index.php et inc-urls-balluche.php3 à la racine de votre site
  17. Definissez ensuite dans ecrire/mes_options.php3 :
  18. $type_urls = 'balluche';
  19. SPIP calculera alors ses liens sous la forme "/?no_article/Mon-titre-d-article".
  20. */
  21. $req = $_SERVER['QUERY_STRING'];
  22. $search = array('@(\d+)/-([^/\.]+)-.*@i', '@(\d+)/_([^/\.]+)_.*@i', '@(\d+)/\+([^/\.]+)\+.*@i', '@(\d+)/_([^/\.]+)_.*@i', '@(\d+)/([^/\.]+)@i');
  23. $replace = array('$fond = "rubrique";$_GET[id_rubrique]=\1;', '$fond = "auteur";$_GET[id_auteur]=\1;', '$fond = "breve";$_GET[id_breve]=\1;', '$fond = "mot";$_GET[id_mot]=\1;', '$fond = "article";$_GET[id_article]=\1;');
  24. $text = preg_replace($search, $replace, $req);
  25. if ($text == $req)
  26. {
  27.  $fond = 'sommaire';
  28. }
  29. else
  30. {
  31.  eval($text);
  32. }
  33. $delais = 2 * 3600;
  34. include ("inc-public.php3" );
  35. ?>


 
le site http://balluche.free.fr/ a etait fait avec (pour exemple)
 
Merci aux differentes personnes qui pouront m'aidé, et aidé tous les autres qui sont dans la m^me impace que moi ;)
 

Reply

Marsh Posté le 09-04-2006 à 18:00:30   

Reply

Marsh Posté le 09-04-2006 à 19:16:55    

http://support.free.fr/web/restriction_access.html
 
semble donner des reponses
courage
Pam

Reply

Marsh Posté le 10-04-2006 à 12:02:27    

le lien que tu me fait passer n'est plus bon  :(  
 

La page demandée n'est pas disponible sur ce serveur
 
Le site web de free a récemment changé :)
 
Vous avez manuellement saisi une URL, ou utilisé un signet ?
Merci de vérifier vos sources ou mettez à jour votre bookmark.
 
Vous souhaitez effectuer une opération, gérer votre compte ou consulter votre suivi de commande Freebox?
 
Merci de vous rendre sur votre nouvelle interface d'administration personnalisée :
 
à l'adresse: http://subscribe.free.fr/login/
 
Vous avez des questions et/ou recherchez un contact?
Merci de vous rendre à l'adresse suivante : http://www.free.fr/contact.html
 
En surfant sur Free, un lien vous paraît erroné ?
Merci de nous informer du problème rencontré par e-mail , à l'adresse webmaster@free.fr
en nous communiquant l'adresse de la page et le lien en question.
 
L'équipe Free

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed