Apache qui ne veut rien entendre

Discussion dans 'URL Rewriting et .htaccess' créé par Reflexive, 6 Janvier 2014.

  1. Reflexive
    Reflexive Nouveau WRInaute
    Inscrit:
    6 Janvier 2014
    Messages:
    4
    J'aime reçus:
    0
    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é.

    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 ...
     
  2. Blount
    Blount WRInaute impliqué
    Inscrit:
    18 Novembre 2010
    Messages:
    701
    J'aime reçus:
    0
    Dans ta ligne sur le RewriteRule, l'adresse destinataire de la redirection n'est pas une RegExp, il ne faut donc pas protéger les caractères spéciaux.
    Ta ligne:
    RewriteRule ^([0-9a-z-]+)/([0-9]+)\.html$ films\.php?id_film=$2
    Devrait être
    RewriteRule ^([0-9a-z-]+)/([0-9]+)\.html$ films.php?id_film=$2
     
  3. spout
    spout WRInaute accro
    Inscrit:
    14 Mai 2003
    Messages:
    9 162
    J'aime reçus:
    326
  4. Reflexive
    Reflexive Nouveau WRInaute
    Inscrit:
    6 Janvier 2014
    Messages:
    4
    J'aime reçus:
    0

    Avant de poster, j'ai essayé beaucoup de choses. A un moment donné, je me suis dit qu'il faudrait peut-être échapper les points. Je viens d'essayer ce que tu as proposé, sans résultat.

    Le script que j'ai laissé plus haut fonctionne tout seul. Pas besoin d'autre script (genre index.php), ni de base de données. On peut le copier dans n'importe quel répertoire du serveur - avec le .htaccess puisqu'l s'agit de tester ça - et éxécuter. Je le dis parce que je ne sais pas si c'est une erreur dans mes scripts ou dans ma configuration, et que je suis curieux de savoir si ça marcherait ailleurs.

    Je ne l'ai pas précisé : ce que j'obtiens est une erreur 404 ainsi formulée :


    ... ben ... peut-être parce que c'est ce qui est habituellement conseillé ... C'est la première fois que je vois ce dont tu parles.
     
  5. spout
    spout WRInaute accro
    Inscrit:
    14 Mai 2003
    Messages:
    9 162
    J'aime reçus:
    326
    C'est ce qu'utilise WP, Drupal,... et la plupart des frameworks.
    http://en.wikipedia.org/wiki/Front_Controller_pattern
     
  6. Reflexive
    Reflexive Nouveau WRInaute
    Inscrit:
    6 Janvier 2014
    Messages:
    4
    J'aime reçus:
    0
    Mais je te crois sur parole, je suis le contraire d'un expert en la matière.
     
  7. Blount
    Blount WRInaute impliqué
    Inscrit:
    18 Novembre 2010
    Messages:
    701
    J'aime reçus:
    0
    Chez moi, en enlevant le fameux slashe, ça fonctionne.

    Où est positionné ton fichier films.php par rapport à ton htaccess ?
     
  8. Reflexive
    Reflexive Nouveau WRInaute
    Inscrit:
    6 Janvier 2014
    Messages:
    4
    J'aime reçus:
    0
    Ils sont dans le même dossier, dans le dossier racine d'un hôte virtuel. Peut-être est-ce l'hôte virtuel qui gène ... ?
    L'hôte s'appelle enbref.alx. D'abord ils étaient dans un dossier enbref.alx/test. Comme ça ne marchait pas, je les ai mis dans le dossier racine. Mais sans succès.
     
Chargement...
Similar Threads - Apache entendre Forum Date
monitoring apache2 ? Développement d'un site Web ou d'une appli mobile 28 Octobre 2019
Incohérences stats de crawl et logs apache Crawl et indexation Google, sitemaps 25 Juillet 2019
Renewal letsencrypt plante Apache Administration d'un site Web 12 Avril 2019
Coupure intempestive apache Développement d'un site Web ou d'une appli mobile 14 Mars 2019
Apache et QUIC (http/3) Administration d'un site Web 14 Novembre 2018
Tracer le fonctionnement d'Apache (2.2.15) Administration d'un site Web 23 Avril 2018
Tuto http->https pour apache Administration d'un site Web 9 Mars 2018
Redirection de page avec virtualhost d'apache Développement d'un site Web ou d'une appli mobile 6 Février 2017
Charset apache / php ? Administration d'un site Web 6 Juin 2016
Apache => Ngnix - Réécriture RewriteCond URL Rewriting et .htaccess 1 Février 2016