サイトの再設計後、リダイレクトが必要なページがいくつかあります。すべてが同じドメインにとどまり、ほんの2、3の事柄が再編成または名前変更されました。それらは次の形式です。
/contact.php
今です:
/contact-us.php
.htaccessファイルを使用して、次の行を追加しました。これは、最もお勧めの行です。
RedirectMatch 301 /contact.php /contact-us.php
これはほとんど問題ありません-それは仕事をします-問題は、それもリダイレクトします:
ルートのcontact.phpのみをリダイレクトすることを指定する方法はありますか?
RedirectMatch
は、URLパスと照合される正規表現を使用します。そして、正規表現/contact.php
は、単に/contact.php
を含むすべてのURLパスを意味しますが、単に正確に/contact.php
であるURLパスを意味します。そのため、文字列の開始と終了にアンカーを使用します(^
および$)
:
RedirectMatch 301 ^/contact\.php$ /contact-us.php
これはそれを行う必要があります
RedirectPermanent /contact.php /contact-us.php
redirect 301 /contact.php /contact-us.php
Redirectmatchルールを使用しても意味がなく、完全に一致するようにリンクを記述する必要があります。含めない場合、除外する必要はありません!一致せずにリダイレクトを使用してから、通常どおりにリンクを使用します
URLをテンプレートに一致させてリダイレクトする機能が必要な場合は、 RewriteRule を使用することもできます。
問題に対して 最も簡単な解決策 を使用したい場合は、 RedirectMatch の代わりに、より基本的な Redirect ディレクティブを使用します。
パターンマッチングを使用しないため、他のユーザーがより明確に理解しやすくなります。
すなわち
<IfModule mod_alias.c>
#Repoint old contact page to new contact page:
Redirect 301 /contact.php http://example.com/contact-us.php
</IfModule>
ドキュメントには次のように記述されているため、クエリ文字列を引き継ぐ必要があります。
一致したURLパス以外の追加のパス情報がターゲットURLに追加されます。