web-dev-qa-db-ja.com

すべてのコンテンツもリダイレクトせずに、.htaccessのディレクトリのルートをリダイレクトする方法は?

次のように、.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

1
Alan Kis

正確な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

2
Alan Kis