2010-12-03 9 views
0

Je voudrais savoir comment utiliser correctement la fonction mode_rewrite de php. Je développe actuellement avec xampp. J'ai activé LoadModule rewrite_module modules/mod_rewrite.so dans le fichier httpd.conf. Je également sous la direction des lignes suivantes:Comment utiliser la fonction mode_rewrite

<Directory /> 
    Options FollowSymLinks 
    AllowOverride All 
    Order deny,allow 
    Deny from all 
</Directory> 

Dans mon fichier .htaccess, j'ai le code suivant:

RewriteEngine On 
RewriteRule ^([^/]*)\.html$ /?m=$1 [L] 

Il devrait changer ?m=start-?start.html. Quand j'ouvre maintenant localhost/page/start.html, ça me montre seulement "Ça marche". Mais pourquoi ne me montre-t-il pas le contenu de localhost/page/?m=start?

Une autre question serait, comment puis-je changer la règle de réécriture, que j'ai pu accéder localhost/page/?m=start&set=update à localhost/page/start/update.html?

Merci de votre réponse!

Répondre

1

Vous utilisez le chemin absolu / dans votre substitution. Donc, lors de l'utilisation de cette règle dans le fichier .htaccess dans /page/ une demande de /page/start.html sera effectivement réécrite à /?m=start et non /page/?m=start.

Essayez un chemin relatif à la place:

RewriteRule ^([^/]*)\.html$ ./?m=$1 [L] 
+0

Wow, réponse très rapide :) Merci, il travaille maintenant. Pourriez-vous également me dire comment je peux résoudre mon deuxième problème? J'ai par exemple ce localhost/page /? M = kontakt. Lorsque j'ai envoyé le formulaire sur cette page, l'URL ressemble à localhost/page /? M = kontakt & set = update. Comment doit ressembler la règle de réécriture? – enyce12

+0

@Damian Frizzi: Oh, je n'ai pas vu ça. Eh bien, dans ce cas, vous devez utiliser un 'RewriteCond' et regarder la valeur de'% {QUERY_STRING} '. Mais pour éviter la récursivité réciproque, vous devez également regarder '% {THE_REQUEST}' ou rechercher un code d'état de réponse. C'est un peu plus compliqué. Donc, dans le cas où vous utilisez non seulement des fichiers statiques mais un langage de programmation, vous devriez mieux utiliser ce langage de programmation pour faire cette redirection. – Gumbo

+0

Puh, c'est un peu difficile à comprendre pour moi. Je n'ai jamais travaillé avec ça avant. Où puis-je obtenir la valeur de% {QUERY_STRING} et de% {THE_REQUEST}? J'utilise PHP, comment puis-je utiliser cette langue pour faire une redirection? – enyce12