次のように、.htaccessファイルに301リダイレクトでリダイレクトされている2つの特定のURLがあります。
redirect 301 /old-url-1/ http://www.domain.com/new-url-3/
redirect 301 /old-url-2/ http://www.domain.com/new-url-3/
問題は次のようなURL構造にあります。
http://www.domain.com/old-url-1/sub-url/
またはhttp://www.domain.com/old-url-2/sub-url/
は、http://www.domain.com/old-url-1/sub-url/
にリダイレクトされたURLの目的のパスに到達していません。
/old-url-1/
部分のみを一致させ、その場合リダイレクトする方法はありますか、他のすべての場合、/ old-url-1/sub-url /のような元のパスに従うだけですか?
**望ましい効果は次のとおりです。誰かがhttp://www.domain.com/old-url-1/
にアクセスした場合、http://www.domain.com/new-url-3/
に訪問者をリダイレクトしますが、誰かがhttp://www.domain.com/old-url-1/sub-url/
keep訪問者にそのURLを訪問し、http://www.domain.com/new-url-3/sub-url
。
正確なURL一致のみをリダイレクトするためのキーは、redirectMatchに httpd.Apache.org に従って正規表現で簡単に達成できるURLのみと一致するように指示することです。
説明:現在のURLの正規表現一致に基づいて外部リダイレクトを送信します構文:RedirectMatch [status] regex URL
私の場合、
redirect 301 /old-url-1/ http://www.domain.com/new-url-3/
なった
RedirectMatch 301 ^/old-url-1/$ http://www.domain.com/new-url-3/
^
はURLの先頭と一致し、$
はURLの末尾と一致します。
したがって、私のルールはold-url-1のみに一致し、old-url-1/sub-urlには一致しませんまたは別のodl-url-1/some-sub-path。