Bonjour
J'ai beau regarder dans tous les sens, je ne vois pas où peut être le problème. Dans l'espoir qu'un oeil averti le voie ...
Il s'agit donc de faire du rewriting. Je suis en développement, donc en local,avec Lamp et Ubuntu. Normalement, le module Apache est bien activé.
J'ai essayé de modéliser le problème sur un site de test plus petit que celui sur lequel je travaille ; qui s'est avéré encore trop grand. Donc, j'ai fait une modélisation de la modélisation pour essayer de ne garder que l'essentiel. Ca simule un site qui reperteriorerait des films. L'URL brute est quelque chose comme ça : films.php?id_film=1 et je voudrais une URL comme ça : le-super-film/1.html. J'ai fait le fichier .htaccess suivant :
Mais Apache ne veut rien entendre. Le fichier html, connais pas.
Quant au fichier php - désolé d'en mettre autant, mais comme ça il est possible de copier coller et voir tout de suite ce qui se passe - le voici :
Si quelqu'un pouvait avoir une idée ...
J'ai beau regarder dans tous les sens, je ne vois pas où peut être le problème. Dans l'espoir qu'un oeil averti le voie ...
Il s'agit donc de faire du rewriting. Je suis en développement, donc en local,avec Lamp et Ubuntu. Normalement, le module Apache est bien activé.
Code:
xxx@xxx:~$ sudo a2enmod rewrite
[sudo] password for xxx:
Module rewrite already enabled
J'ai essayé de modéliser le problème sur un site de test plus petit que celui sur lequel je travaille ; qui s'est avéré encore trop grand. Donc, j'ai fait une modélisation de la modélisation pour essayer de ne garder que l'essentiel. Ca simule un site qui reperteriorerait des films. L'URL brute est quelque chose comme ça : films.php?id_film=1 et je voudrais une URL comme ça : le-super-film/1.html. J'ai fait le fichier .htaccess suivant :
Code:
Options +FollowSymlinks
RewriteEngine on
RewriteRule ^([0-9a-z-]+)/([0-9]+)\.html$ films\.php?id_film=$2
Mais Apache ne veut rien entendre. Le fichier html, connais pas.
Quant au fichier php - désolé d'en mettre autant, mais comme ça il est possible de copier coller et voir tout de suite ce qui se passe - le voici :
Code:
<?php
$films=array(
1=>"Les Dents de la mer",2=>"Apocalypse Now",3=>"Blade Runner",
4=>"Star Wars",5=>"Inspecteur Harry",6=>"L'Exorciste");
if(isset($_GET['id_film'])){$id_film=$_GET['id_film'] ;}else{$id_film=1;}
$liens="" ;
foreach($films as $clef =>$film){
$direct_url = "films.php?id_film=$clef" ;
$rewrited_url = get_URL($film) . "/" . $clef . ".html" ;
$liens = $liens . "<li style='margin-bottom:15px;'>" .
"<a href='$direct_url'>direct : $film</a><br>" .
"<a href='$rewrited_url'>rewrited : $film</a><br>" .
"</li>" ;
}
?>
<!DOCTYPE html>
<html><head><title>Films</title>
<style>a, a:visited{color:blue;text-decoration:none;}
a:hover, a:active{text-decoration:underline;}</style>
</head><body>
<h1><?php echo $films[$id_film]; ?></h1>
<ul><?php echo $liens; ?></ul>
</body></html>
<?php
function get_URL($url_Titre){
// Suppression de caractères spéciaux
$caracteres_speciaux = array(';', ',', '.', ':', '/', '(', ')', '<', '>', '=', '+', '*') ;
$url_Titre = str_replace($caracteres_speciaux , "", $url_Titre ) ;
//Suppression des espaces avant et arrière
$url_Titre = trim($url_Titre) ;
// Supression des accents
$accent="ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõöøùúûýýþÿ";
$noAccent="aaaaaaaceeeeiiiidnoooooouuuuybsaaaaaaaceeeeiiiidnoooooouuuyyby";
$reecriture=strtr($url_Titre,$accent,$noAccent);
$reecriture = strToLower($reecriture) ;
// On remplace les espaces et les apostrophes par des tirets
$url_Titre=preg_replace("# #","-",$reecriture);
$url_Titre=preg_replace("#'#","-",$url_Titre);
// Et voilou
return $url_Titre ;
}
?>
Si quelqu'un pouvait avoir une idée ...