書き込みルールはどのように使用しますか?
リダイレクトする必要がある
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
。