web-dev-qa-db-fra.com

Supprimer fb_action_ids de l'URL avec .htaccess

Malheureusement, mon hébergeur ne me laissera pas avoir plus d'un .htaccess et je suis donc obligé d'inclure toutes les règles pour les URL de chemin d'accès parent et enfant virtuelle/physique. Mon arborescence de répertoires est la suivante:

  • index.html
    • css
    • img
    • amixermusique
      • index.php
      • escuchar.php
      • css
      • img
      • js

C'est le code de mon htaccess:

RewriteEngine On +FollowSymlinks
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d

RewriteRule ^([0-9]+)/$ /$1? [R=301,L]
RewriteCond %{HTTP_Host} ^example.com
RewriteRule (.*) http://www.example.com/$1 [R=301,L]

RewriteRule ^amixermusic/escuchar/(.+) /amixermusic/escuchar.php?id=$1
RewriteRule ^amixermusic/buscar/([^/]*)/?(.*) /amixermusic/index.php?q=$1&p=$2

RewriteCond %{QUERY_STRING} fb_action_ids=.*$
RewriteRule .* %{REQUEST_URI}? [R=301,L]

RewriteCond %{QUERY_STRING} fb_comment_id=.*$
RewriteRule .* %{REQUEST_URI}? [R=301,L]

Tout fonctionne bien, sauf que les lignes doivent supprimer fb_action_ids. Je ne sais pas ce que je devrais changer. J'ai oublié de mentionner que le bouton "like" est dans "escuchar.php". Ceci est généré automatiquement en obtenant l'URL de la fenêtre en utilisant PHP. Donc, je pense que la déclaration devrait spécifier le répertoire, non?

2
Kokox

Je soupçonne que votre règle ne tire pas parce qu'elle se trouve à la fin de votre dossier. Il vient après certaines de vos autres règles qui sont marquées comme des règles "Last" avec le drapeau [L]. Déplacer simplement la règle en haut du fichier devrait aider.

Vous pouvez également combiner cela en une seule règle en faisant la condition suivante:

RewriteCond %{QUERY_STRING} fb_(action|comment)_id
1
Stephen Ostermiller