2009-03-29 5 views
2

Mon rewriterule une condition fonctionne bien comme ci-dessous:.htaccess: comment réécrire uniquement l'URL .php?

http://www.sitename.com/index.php?n=text redirige vers http://www.sitename.com/pages/text

et la page rend bien, cependant, il y a un problème avec l'URL redirigée les arguments sont également ajoutés à la URL Donc en fait dans la barre d'adresse, il semble comme-

Quelqu'un pourrait-il me aider à ce sujet? Le code htaccess est donné ci-dessous.

RewriteCond %{QUERY_STRING} ^n=(.*)$ 
RewriteRule index.php http://www.sitename.com/pages/%1 [r=301,nc] 
+0

Ok Je vais mordre: pourquoi voulez-vous rediriger de index.php? n = texte à/pages/texte? J'ai vu des gens faire l'autre façon d'obtenir de "jolies" URL, mais de quoi s'agit-il? – cletus

Répondre

1

Vous voulez probablement attraper "index.php.*". Sinon, mod_rewrite ne remplace que la partie "index.php" de l'URL "index.php?n=text" avec la nouvelle URL.

0

Guss,

D'après ce que vous avez dit, je reconstruit comme suit:

RewriteCond %{QUERY_STRING} ^n=(.*)$ 
RewriteRule index.php.* http://www.sitename.com/pages/%1 [r=301,nc] 

Ce ne marche pas semblent fonctionner non plus. Pouvez-vous élaborer sur ce que vous avez dit?

merci Aditya

+0

Au lieu d'ajouter une nouvelle réponse, veuillez mettre à jour (éditer) votre question en indiquant la mise à jour et commenter la réponse de Guss. –

0

ne pas utiliser l'URL dans la règle de réécriture, apache envoie alors un code http 200 et le 301 ...

STH try. comme ceci:

RewriteRule (index\.php)(?n=)(.*) /pages/$3 [r=301]