2010-05-04 6 views
0

J'essaie de modifier la façon dont nous fournissons actuellement un système de page de passerelle au sein de notre système de gestion de contenu. Ce que je veux dire par page de passerelle est de mapper une URL inexistante à une page à travers une règle de réécriture dans le .htaccess, par exemple.Système de page de passerelle

RewriteRule ^foobar$ page.php?mode=bar&method=foo&id=1 

Cela permet aux gens de créer des liens vers des pages courtes CMS pour les annonces de magazines, etc. Le problème avec cette méthode est qu'elle repose sur l'accès à l'.htaccess. Je préférerais une méthode qui se situe au niveau du code mais il me semble que - sans une règle de réécriture - une erreur 404 sera appelée. Est-il possible d'empêcher cela ou de contourner ce problème?

+0

un problème avec votre .htaccess? Pourquoi est-ce un problème d'en dépendre? – Ben

+0

c'est un problème si de nouvelles redirections doivent être ajoutées dynamiquement et une syntaxe incorrecte provoque 500 erreurs – robjmills

Répondre

4

Vous pouvez utiliser un réécrire dans votre htaccess. Cela fait référence à un fichier/script externe, en passant l'uri entrant et en récupérant l'uri réécrit.

Dans votre .htaccess

RewriteMap shorts prg:/path/to/map.php 

Dans votre fichier php map.php

#!/path/to/php 
$keyboard = fopen("php://stdin","r"); // get data from stdin 
while (1) { 
    $line = trim(fgets($keyboard)); 
    // fetch rewrite for line and echo out 
} 

Le fichier php est passé court URL et retourne - en fonction de votre logique - l'URL complète

+0

Je fais comme cette option, je suppose bien qu'elle tombe toujours là où toute règle .htaccess tombe en panne - syntaxe incorrecte = erreur 500? – robjmills

+0

Je ne suis pas sûr, vous devrez faire un test. Vous pouvez essayer de retourner null, voir comment la règle gère cela. Désolé, je suis un peu rouillé! –

Questions connexes