CMSの変更後にリダイレクトする必要がある約6000のURLがあります。これらのすべてのURLは、IDとともにDBテーブルに格納され、参照されているものを識別できます。このテーブルを使用すると、多数の書き換えルールを使用して1つの巨大な.htaccessを生成できますが、これは非常に効率が悪いと思われます。最適な方法は何ですか?私が知る限り、2つのオプションがあります。
(次のように要約できます:ハッシュマップはインデックス付きDBテーブルよりもファイルシステムに保存されていますか?)
質問の2番目の部分新しいURLには、呼び出されるページのIDが含まれます。何かのようなもの
www.example.com/abc/21-defghi.html
代わりに私が電話した場合
www.example.com/21-xxx.html
正しいURLへの301リダイレクトを取得します。正確な新しいURLを生成する必要がありますか、それとも2つのリダイレクトを連結しても大丈夫ですか?これは、IDのみを保存するか、新しいURL全体を保存することを意味します。
巨大な.htaccessを作成すると、少なくともL属性を持つルール(最後のルール)が一致するまで、すべてのリクエストに対して線形に読み取られるため、システムのパフォーマンスに深刻な影響を与える可能性があります。
同様のこと(約3000回のリダイレクト)を行う方法は、.htaccessにカスタムエラーページを配置することです。メモリからの構文は次のようなものです。
ErrorDocument 404 404.php
次に、404.phpで、MySQLデータベースを使用してロジックを実装し、要求されたURLを使用して新しいURLを検索します。見つかった場合は、PHPロケーションヘッダーを使用してリクエストをリダイレクトし、見つからない場合は、カスタムエラーページを表示します。
。htaccessで404リダイレクトを単に発行するのとは異なり、404.phpファイルはリクエストを追跡し、返されるリダイレクトの統計を保持できます。