.htaccess 動的ネスト URL によるリダイレクト方法

.htaccess 動的ネスト URL によるリダイレクト方法

書き込みルールはどのように使用しますか?

リダイレクトする必要がある

www.example.com/accesories

www.example.com/accesories/item

アップデート:使用するとRedirect /accesories /accesories/items以下を受け取ります:

www.example.com//accesories/items/items/items/items/items/items/items/items/items/items/items/items/items/items/items/items/items/items/items/items/items/items/items/items/items/items/items/items/items/items/items/items/items/items/items/items/items/items/

答え1

Redirect /accesories /accesories/items

Redirectはい、mod_aliasディレクティブはプレフィックスマッチングなので、リダイレクトループが発生します。Apacheドキュメント(私自身の部分をハイライトしています):

...あらゆるリクエストから始まるURL-path は、ターゲット URL の場所でクライアントにリダイレクト要求を返します。一致した URL パスを超える追加のパス情報がターゲット URL に追加されます。

特定のURLだけをリダイレクトしたい場合は、RedirectMatchディレクティブを使用する必要があります。*1代わりに、正規表現に一致します。例:

RedirectMatch ^/accesories$ /accesories/items

*1すでに他のディレクティブで mod_rewrite を使用している場合 (「他にどのようなディレクティブがありますか?」と質問した理由)、代わりに mod_rewrite を使用することをお勧めします。

「動的」 - アクセサリーは製品を含むカテゴリですが、製品を表示したくないので、/accesories/items にリダイレクトする必要があります。

これが何を意味しているかよく分かりませんが、/accesories/<products>にリダイレクトする必要がある場合/accesories/items、 は<products>任意の単一のパス セグメントですが、 は除きます。itemsその場合は、ディレクティブで否定の先読みを使用して次のような操作を行う必要がありますRedirectMatch(または mod_rewrite を使用します)。例:

RedirectMatch ^/accesories(/(?!items)[^/]*)?$ /accesories/items

上記は/accesories、、およびを にリダイレクトします/accesories//accesories/<anything>/accesories/itemsにはリダイレクトしません (リダイレクト ループが作成されるため) /accesories/items

これらは 302 (一時的) リダイレクトであることに注意してください。(潜在的なキャッシュの問題を回避するために常に 302 でテストし、意図している場合にのみ後で 301 に変更してください。)

ディレクティブの順序は.htaccess重要になる場合があります。外部リダイレクトは通常、ファイルの先頭近くに配置する必要があります.htaccess

関連情報