-2

約 400 個の URL を永続的にリダイレクトする必要があります。それについて行く最善の方法は何ですか?最も明白な解決策は、400 行の「Redirect 301 old-url new-url」を .htaccess に追加することです。より良い方法はありますか?

URL の例:

これらの50:

/category -> /new-category-name-c/

これらの約 350:

/category/subcategory/product.html -> /slightly-different-product-name.html

編集:例を追加

4

1 に答える 1

1

存在しないすべてのページを処理する 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 で提案されているように、RewriteMapapache ディレクティブを使用できます。古い 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に入れるよりも保守が簡単です。

于 2013-04-10T08:05:01.910 に答える