web-dev-qa-db-ja.com

.htaccessを使用してURLのfb_action_idsを削除します

残念ながら、私のウェブサイトのホストは複数の.htaccessを持たせないため、パスの親と子の仮想/物理URLのすべてのルールを含めることを強制されます。私のディレクトリツリーは次のとおりです。

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

これは私の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]

行がfb_action_idsを削除することを除いて、すべて正常に動作します。何を変えるべきか分かりません。 「いいね」ボタンは「escuchar.php」にあることを忘れていました。これは、PHPを使用してウィンドウのURLを自動的に取得して生成されます。だから私はステートメントがディレクトリを指定すべきだと思う?

2
Kokox

ファイルの最後にあるため、ルールは実行されていないと思われます。 [L]フラグが付いた「最後の」ルールとしてマークされている他のルールの後に続きます。ルールをファイルの先頭に移動するだけで役立ちます。

条件を次のようにすることで、それを単一のルールに結合することもできます。

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