古いサイトを、Drupalを使用している新しいサイトに移行しています。この一環として、新しいページへの301リダイレクトを設定しようとしていますが、予期しない動作が発生しています。 .htaccessファイルに次の行を追加しました。
redirect 301 /redirect.html http://www.example.com/newpage
残念ながら、何が起こるかというと、
http://www.example.com/newpage?q=redirect.html
もちろん、これは正しく読み込まれません。何かご意見は?
それで少し検索した後、私は答えを見つけました here 。これはdanlefreeに似ていますが、わずかに異なります。
<IFModule mod_rewrite.c>
RewriteEngine on
RewriteBase /
# custom redirects
RewriteRule ^redirect\.html$ http://www.mysite.com/newpage [R=301,L]
# end custom redirects
...
</IFModule>
これで仕事が完了したようです。
.htaccess.
を忘れる グローバルリダイレクト を使用します。以下を提供します。
それはあなたのウェブサイトの移行をわずかに単純化し、そしておそらく最も重要なことで、どこにリダイレクトされているかを正確に調べることを簡単にします。 (ユーザーインターフェイスがあるため)
ボーナス(ここに飛び出るクリップを想像してください)
clean URLs のようなものを作成しているようです。 pathauto に興味があるかもしれません。
他の書き換えルールが干渉しています。
代わりに次を試してください。
RewriteEngine on
RewriteRule ^/redirect\.html$ http://www.mysite.com/newpage [L,R=301]
# ... existing rewrites
以前は パスリダイレクトモジュール を使用していました。 Mod_rewriteでできるすべての強力な機能を処理することはできませんが、古いURLを保存するという点で本当に素晴らしい仕事をしました。