Requête de dissimulation de chaîne

Je veux supprimer la chaîne de requête de l’URL.

For eg: localhost/index.php?page=value to localhost/index.php 

J’utilise actuellement:

 RewriteEngine On RewriteCond %{REQUEST_URI} !^/index.php$ RewriteRule ^(.+)\.php$ /$1/? [R=301,L] RewriteRule ^([A-Za-z0-9-]+)/?$ index.php?page=$1 [L] 

Ce n’est pas la réécriture … Est-ce que quelque chose que je fais est mal?

MODIFIER

Suppression de QSL commentée par Clive

Nous réécrivons ici la requête d’origine avec une chaîne de requête vide si la chaîne de requête n’est pas vide.

 RewriteEngine On RewriteCond %{QUERY_STRING} !^$ RewriteRule ^(.*)$ $1? 

Ceci est déjà inclus dans Apache avec [QSD] Query Ssortingng Discard :

 RewriteRule ^(.*)$ $1 [QSD] 

Remarque: les chaînes de requête vous permettent de suivre toutes sortes de choses dans les fichiers journaux et dans les liens provenant de sources externes. Cela limitera ces options.

Ce n’est probablement pas ce que vous voulez faire (perdre beaucoup d’anciens liens pour le référencement de cette façon). Donc, voici comment redirect les anciennes chaînes de requêtes vers de nouvelles URL en tant que redirection 301. Cela devient un peu déroutant visuellement pour les personnes qui ne sont pas familières avec RegEx ou comment Apache fonctionne. Terminer par un point d’interrogation dans la première partie de la chaîne signifie “peut-être le caractère précédent”. Dans ce cas, nous avons ajouté le ? à la fin du remplacement (pas un modèle REGEX) car le comportement par défaut d’Apache est similaire à [QSA] (append ssortingng de requête) conformément au manuel Apache pour l’indicateur QSD . Alors l’addition du single ? en soi crée une chaîne de requête vide pour annuler la chaîne existante. Il existe quelques réponses sur StackOverflow qui utilisent cette méthode.

 RewriteCond %{QUERY_STRING} page=(.*) RewriteRule .* %1/? [R=301,L] 

En utilisant [QSD] vous pouvez l’écrire de cette façon:

 RewriteCond %{QUERY_STRING} page=(.*) RewriteRule .* %1/ [R=301,L,QSD] 

Votre autre correspondance prend un fichier comme contact.php et le redirige vers /contact/ . Qui peut aussi être encore valide.

 RewriteCond %{REQUEST_URI} !^/index.php$ RewriteRule ^(.+)\.php$ /$1/? [R=301,L] 

Cette règle pourrait également être écrite avec QSD:

 RewriteRule ^(.+)\.php$ /$1/ [R=301,L,QSD]