html.php 3.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108
  1. <?php
  2. /***************************************************************************\
  3. * SPIP, Systeme de publication pour l'internet *
  4. * *
  5. * Copyright (c) 2001-2014 *
  6. * Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James *
  7. * *
  8. * Ce programme est un logiciel libre distribue sous licence GNU/GPL. *
  9. * Pour plus de details voir le fichier COPYING.txt ou l'aide en ligne. *
  10. \***************************************************************************/
  11. /*
  12. - Comment utiliser ce jeu d'URLs ?
  13. Recopiez le fichier "htaccess.txt" du repertoire de base du site SPIP sous
  14. le sous le nom ".htaccess" (attention a ne pas ecraser d'autres reglages
  15. que vous pourriez avoir mis dans ce fichier) ; si votre site est en
  16. "sous-repertoire", vous devrez aussi editer la ligne "RewriteBase" ce fichier.
  17. Les URLs definies seront alors redirigees vers les fichiers de SPIP.
  18. Dans les pages de configuration, choisissez 'html' comme type d'url
  19. SPIP calculera alors ses liens sous la forme "article123.html".
  20. Note : si le fichier htaccess.txt se revele trop "puissant", car trop
  21. generique, et conduit a des problemes (en lien par exemple avec d'autres
  22. applications installees dans votre repertoire, a cote de SPIP), vous
  23. pouvez l'editer pour ne conserver que la partie concernant les URLS 'html'.
  24. */
  25. if (!defined("_ECRIRE_INC_VERSION")) return; // securiser
  26. # donner un exemple d'url pour le formulaire de choix
  27. define('URLS_HTML_EXEMPLE', 'article12.html');
  28. // http://code.spip.net/@_generer_url_html
  29. function _generer_url_html($type, $id, $args='', $ancre='') {
  30. if ($generer_url_externe = charger_fonction("generer_url_$type",'urls',true)) {
  31. $url = $generer_url_externe($id, $args, $ancre);
  32. if (NULL != $url) return $url;
  33. }
  34. return _DIR_RACINE . $type . $id . '.html' . ($args ? "?$args" : '') .($ancre ? "#$ancre" : '');
  35. }
  36. // retrouver les parametres d'une URL dite "html"
  37. // http://code.spip.net/@urls_html_dist
  38. function urls_html_dist($i, $entite, $args='', $ancre='') {
  39. if (is_numeric($i))
  40. return _generer_url_html($entite, $i, $args, $ancre);
  41. // recuperer les &debut_xx;
  42. if (is_array($args))
  43. $contexte = $args;
  44. else
  45. parse_str($args,$contexte);
  46. // traiter les injections du type domaine.org/spip.php/cestnimportequoi/ou/encore/plus/rubrique23
  47. if ($GLOBALS['profondeur_url']>0 AND $entite=='sommaire'){
  48. return array(array(),'404');
  49. }
  50. $url = $i;
  51. // voir s'il faut recuperer le id_* implicite et les &debut_xx;
  52. include_spip('inc/urls');
  53. $r = nettoyer_url_page($i, $contexte);
  54. if ($r) {
  55. array_pop($r); // nettoyer_url_page renvoie un argument de plus inutile ici
  56. // il n'est pas necessaire de forcer le fond en 4eme arg car l'url n'est pas query string
  57. // sauf si pas de fond connu
  58. if ($entite)
  59. array_pop($r);
  60. return $r;
  61. }
  62. /*
  63. * Le bloc qui suit sert a faciliter les transitions depuis
  64. * le mode 'urls-propres' vers les modes 'urls-standard' et 'url-html'
  65. * Il est inutile de le recopier si vous personnalisez vos URLs
  66. * et votre .htaccess
  67. */
  68. // Si on est revenu en mode html, mais c'est une ancienne url_propre
  69. // on ne redirige pas, on assume le nouveau contexte (si possible)
  70. $url_propre = isset($url)
  71. ? $url
  72. : (isset($_SERVER['REDIRECT_url_propre'])
  73. ? $_SERVER['REDIRECT_url_propre']
  74. : (isset($_ENV['url_propre'])
  75. ? $_ENV['url_propre']
  76. : ''
  77. ));
  78. if ($url_propre) {
  79. if ($GLOBALS['profondeur_url']<=0)
  80. $urls_anciennes = charger_fonction('propres','urls');
  81. else
  82. $urls_anciennes = charger_fonction('arbo','urls');
  83. return $urls_anciennes($url_propre, $entite, $contexte);
  84. }
  85. /* Fin du bloc compatibilite url-propres */
  86. }
  87. ?>