web-dev-qa-db-ja.com

drupalシステムでの301リダイレクト動作

古いサイトを、Drupalを使用している新しいサイトに移行しています。この一環として、新しいページへの301リダイレクトを設定しようとしていますが、予期しない動作が発生しています。 .htaccessファイルに次の行を追加しました。

redirect 301 /redirect.html http://www.example.com/newpage

残念ながら、何が起こるかというと、

http://www.example.com/newpage?q=redirect.html

もちろん、これは正しく読み込まれません。何かご意見は?

3
Joe Corkery

それで少し検索した後、私は答えを見つけました 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>

これで仕事が完了したようです。

3
Joe Corkery

.htaccess.を忘れる グローバルリダイレクト を使用します。以下を提供します。

  1. 現在のURLのエイリアスを確認し、使用されていない場合は301へのリダイレクトを行います。
  2. 現在のURLの末尾のスラッシュをチェックし、存在する場合は削除して、新しいリクエストでチェック1を繰り返します。
  3. URLへのアクセスを確認します。ユーザーがパスにアクセスできない場合、リダイレクトは行われません。これにより、プライベートエイリアスノードの公開を回避できます。

それはあなたのウェブサイトの移行をわずかに単純化し、そしておそらく最も重要なことで、どこにリダイレクトされているかを正確に調べることを簡単にします。 (ユーザーインターフェイスがあるため)

ボーナスここに飛び出るクリップを想像してください

clean URLs のようなものを作成しているようです。 pathauto に興味があるかもしれません。

2
cgp

他の書き換えルールが干渉しています。

代わりに次を試してください。

RewriteEngine on

RewriteRule ^/redirect\.html$ http://www.mysite.com/newpage [L,R=301]

# ... existing rewrites
0
danlefree

以前は パスリダイレクトモジュール を使用していました。 Mod_rewriteでできるすべての強力な機能を処理することはできませんが、古いURLを保存するという点で本当に素晴らしい仕事をしました。

0
acrosman