301リダイレクトを使用して、同じWebサイト内の別のページにページをリダイレクトします。このページでは、RewriteRule
を使用してフレンドリURLのPHP変数を非表示にします。
.htaccessのリダイレクトコード:
Redirect 301 /example/Word1/Word2/Word3 http://www.example.com/Word1/Word2
その結果、/Word1/Word2/Word3
にアクセスすると、/Word1/Word2?var1=Word1&var2=Word2&var3=Word3
である以前のRewriteRuleによって設定されたURLにリダイレクトされます。ここで、var1、var2、およびvar3は、コンテンツWord1、Word2、およびWord3に含まれるPHP変数です。
リダイレクトをwww.example.com/Word1/Word2
だけにしたい
Redirect
(mod_alias)をRewriteRule
(mod_rewrite)に変更する必要があります。何かのようなもの:
RewriteRule ^Word1/Word2/Word3 /Word1/Word2 [R=301,L]
(必要に応じてexample/
を差し戻しますが、私にはタイプミスのように見えましたか?)
あなたが経験している問題は、.htaccessファイル内のディレクティブの順序に関係なく、mod_rewrite(ほとんど)が常にmod_aliasの前に実行されることです。このため、これらのモジュールの両方からのディレクティブを混在させることは避けてください。
そして、bybeが示唆しているように、これが他の(内部)リライトの前に来ることを確認してください。そうしないと、同じ問題が発生する可能性があります。一般的に、外部リダイレクトは常に内部書き換えの前に来る必要があります。