最もかわいい URL を取得したり、SEO の重複を防止したりするために、複数の書き換えルールとリダイレクトを備えた Apache 構成があります。例としてスニペットを次に示します (さらに多くの機能があります)。
# Redirecting non-www to www
RewriteCond %{HTTP_HOST} ^example.com
RewriteRule (.*) http://www.example.com/$1 [R=301,L]
# Removing index.php
RewriteCond %{REQUEST_URI} index\.php$ [NC]
RewriteRule .* / [R=301,L]
# A big bunch of these
Redirect permanent /old-article.html http://www.example.com/new-article.html
Redirect permanent /another-old-article.html http://www.example.com/new-article2.html
これはうまく機能しますが、たまたま多くのリダイレクトが生成されます。一般的なケースは次のようになります。
http://example.com/index.php, 301 redirect to http://www.example.com/index.php
http://www.example.com/index.php, 301 redirect to http://www.example.com
4 ~ 5 回のリダイレクトに達することもあります。
ここで、これらすべてのルールを連鎖させ、次のように 301 リダイレクトを 1 つだけ生成するようにします。
http://example.com/index.php, 301 redirect to http://www.example.com
ルールをよりよく一致するように考えて並べ替えることに午後を費やすことができ、組み合わせたルールを作成できることもわかっています。しかし、それはすでに長いファイルを複雑にします。フラグ、オペランド、またはすべてのルールを内部のように実行し、すべてのルールをクロールした後にのみリダイレクトを発行するものが必要です。これは可能ですか?