存在しないすべてのページを処理する PHP (またはその他の) スクリプトを作成できます。古い URL を検出し、新しい URL への 301 リダイレクトを返します。
古い URL を正規表現で解析できない場合は、次のようにマップを作成する必要があります。
$urlMap = array(
'/category1' => '/new-category1',
'/category2' => '/new-category2'
);
そこから新しい URL を検索します。URL がマップにない場合は、404 ヘッダーを返すか、別の場所にリダイレクトします。
ディレクティブを使用して、ErrorDocument
カスタム 404 ページを定義できます。
ErrorDocument 404 /process-urls.php
からパスを取得できます$_SERVER['REQUEST_URI']
。
アップデート
@faa で提案されているように、RewriteMap
apache ディレクティブを使用できます。古い URL から新しい URL にマップするtxtファイルを作成する必要があります。行ごとに 1 つのマッピングがあり、スペースで区切られています。
/category1 /new-category-1
/category2 /new-category-2
次に、仮想ホスト ファイルで、マップを宣言します。
RewriteMap examplemap txt:/path/to/file/map.txt
そして、書き換えルール(.htaccessに配置される場合があります):
RewriteCond ${examplemap:%{REQUEST_URI}|0} !=0
RewriteRule ^(.*) ${examplemap:$1|/not_found.html}
この方法は、400 個の書き換えルールを.htaccessに入れるよりも保守が簡単です。