2010-05-04 3 views
0

J'ai un petit système CMS écrit en PHP et fonctionnant sur Apache. Le format des URL que ce système CMS utilise/génère est:Apache friendly urls

/display.php?PageID=xxx où xxx est juste un nombre entier. Comme vous pouvez le constater, ces URL ne sont pas très conviviales, ni pour les utilisateurs ni pour les moteurs de recherche. Je crois qu'en utilisant mod_rewrite (ou quelque chose comme ça) et les fichiers .htaccess je devrais être capable de configurer Apache pour la réécriture d'URL. J'ai cherché des informations à ce sujet auparavant, mais je n'ai pas trouvé de méthode simple pour cela, cela impliquait toujours de jouer avec des expressions régulières, que je ne connais pas très bien.

Étant donné que le site en question est vraiment simple et petit, juste 5-10 pages différentes, je voudrais vraiment pouvoir coder en dur la configuration, sans règles spéciales ni regexps.

Je voudrais simplement mapper une URL conviviale à une URL réelle, peut-être comme ceci:

/about = /display.php?PageID=44 
/products = /display.php?PageID=34 

etc.

Est-il possible de configurer le plugin mod_rewrite d'une manière de base comme celui-ci ?

Quelqu'un pourrait-il expliquer la méthode la plus simple pour ce faire? Explique-moi comme si j'étais un enfant :-)

Merci d'avance!

+0

Le terme généralement utilisé pour désigner ce dont vous parlez est "slug". Voir: http://en.wikipedia.org/wiki/Slug_%28web_publishing%29 – cbednarski

Répondre

2

bien mettre quelque chose comme

RewriteEngine on 

RewriteRule ^about$ ./display.php?PageID=44 
RewriteRule ^products$ ./display.php?PageID=34 

dans votre .htaccess -file ne devrait pas être la grande affaire que je pense ...

+0

Je vois, cela semble assez simple. Je vais essayer. Merci :-) – HaukurHaf

0

URL Rewriting for Beginners est mon article d'introduction préféré à cela, il devrait couvrir ce que vous cherchez. En fait, le premier exemple réel où vous écrivez un fichier .htaccess est presque identique à ce que vous voulez.

+0

Merci, je vais vérifier cet article! – HaukurHaf

0

Une autre façon est filtre par un fichier php dynamique avec une cartographie des pages ou une stratégie de routage comme les frameworks comme le code drupal allumeur .... et votre URL sera comme my-pages/about.html -> display.php? PageID = 44 my-pages/products.html -> affichage. php? PageID = 34

et ainsi de suite

Voici une suggestion pour le fichier .htaccess et le filtre de l'action avec cette stratégie

--- fichier .htaccess ---- * RewriteEngine sur

RewriteRule^my- pages/(. ) .html $ MON-URL.php [QSA, L, E]

---------------- MY-URL.php ------- -

<?php 

$PREFIX = 'my-pages/'; //--- not used 
$mapping=array(
     'about' => 44, 
     'products' => 34 
); 
$pathinfo= pathinfo($_SERVER['REQUEST_URI']); 
/* $pathinfo['dirname'] -> my-pages 
    $pathinfo['basename'] -> ???.html 
    $pathinfo['extension']-> .html 
*/ 
$page = substr($pathinfo['basename'] ,0,-5); 


if(isset($mapping[$page]){ 
     // ---- redirect or include 
     YUOR CODE HERE 
} 
else { 
     //--- error 404 
      YUOR CODE HERE 
} 


?>