2009-05-27 10 views
1

J'ai un certain nombre de pages sur mon site, comme on pouvait s'y attendre..htaccess Réécrire Question

Par exemple:

index.php submit.php view.php id = bla

Je veux que ces réécrites comme

index/ soumettre/ vue/bla

?

Quel est le meilleur moyen de le faire?

Répondre

1

Les façons de le gérer via .htaccess Rewrite peut générer un peu de mal de tête. Cela semble être une réponse de base, mais à moins que vous ne soyez sur vos expressions régulières, vous allez être perdu.

Cependant, il y a quelques façons de le manipuler. Je suppose que vous avez seulement index.php, submit.php, et view.php avec un id associé.

 
RewriteEngine On 
RewriteRule ^(index|submit|view)/(\d+)$ /$1.php?id=$2 
RewriteRule ^(index|submit|view)/(\d+)$ /$1.php 

Voici comment cela fonctionne: Vous dites à .htaccess d'allumer le moteur de réécriture. Étape 2, vous donnez au site le paramètre qui lui indique comment cela est fait. Le paramètre dans ce cas lit: Au début de l'URL, après le nom de domaine, recherchez index, soumettre ou afficher. Si ceux-ci existent, il va chercher l'identifiant. Si les deux existent, il retournera la valeur dans PHP comme /(index, submit, or view)?id=$id.

La seconde est dans le cas où l'ID n'est pas viable.

Ceci est un moyen simple de le manipuler. Une façon de traiter ce serait ...

 
RewriteEngine On 
RewriteRule ^([a-z]+)/?(\d+)?$ /$1.php?id=$2 

plus complexe Cela va charger tout ce qui est écrit en caractères réguliers par ordre alphabétique des lettres majuscules et minuscules seulement, l'utiliser comme nom de fichier, puis détecte si id est encore nécessaire -il va charger sans.

Vous devez être sûr d'inclure des protections sur vos lignes $_GET pour renvoyer des erreurs si les noms sont erronés ou ne retournent rien de valeur. Vous devriez jouer avec, rechercher des expressions régulières sur un pot de café et quelque chose d'alcoolique (je crois que regexp est la cause # 1 de l'alcoolisme dans les programmeurs modernes, mais je pourrais me tromper ;-P ...) jusqu'à ce que vous trouviez un système qui s'intègre confortablement dans votre système. En note, vous pouvez avoir autant de RewriteRules que vous le souhaitez, mais ils sont toujours traités en commençant par le premier. Je me rends compte que cela ressemble au bon sens, mais il est important de savoir lors du débogage.