[Tep-j-general] URL書き換え後の旧URLから新URLへの301リダイレクト

Back to archive index

Koba koba.****@gmail*****
2007年 6月 23日 (土) 08:13:51 JST


URLの書き換えを下記コード追加&mod_rewriteで実現しました。
/catalog/includes/functions/html_output.phpの
    if ( (SEARCH_ENGINE_FRIENDLY_URLS == 'true') &&
($search_engine_safe == true) ) {
      ・・・・・・・
      $link = str_replace('=', '/', $link);
の後に下記コードを追加、新URLを生成し、旧URLに変換するrewriteルールをhttpd.confに追加するカスタマイズを行いました。
例えば、www.xxx.com/product_info.php/products_id/xxx(旧URL)を
www.xxx.com/item/xxx.html(新URL)で表示させることができています。
httpd.confには、以下のように記載(一部ですが・・・)
RewriteEngine On
RewriteBase /
RewriteRule ^item/(.*)\.html$ product_info.php/products_id/$1
ただ、このままの場合、旧URLへのアクセスを新URLへリダイレクトすることができず、
エンジン対策的にも好ましくありません。
そこで、httpd.confに
RewriteRule ^product_info.php/products_id/(.*)$ item/$1.html [R=301]
を追加して対応・・・と思ったのですが、無限ループを起こしてしまいます。
当然だとは思うのですが・・・
httpd.confの書き方をどのように修正すればよいのでしょうか?
お解りになる方、よろしくお願いいたします。
このカスタマイズは以下のページを参考に行いました。
http://gato.intaa.net/ZenCart/url_rewrite_patch_jp.html

/catalog/includes/functions/html_output.phpに追加したコード
      /*---URLの書き換え-----*/
      if (ereg('cPath', $link)) {
            $link = str_replace('index.php/cPath/', 'cate/', $link);
            $link = str_replace('/sort/2a', '', $link);
            $link = $link . ".html";
            }
      if (ereg('manufacturers_id', $link)) {
            $link = str_replace('index.php/manufacturers_id/', 'color/', $link);
            $link = $link . ".html";
            }
      if (ereg('cPath', $link)) {
            $link = ereg_replace('/cPath/([0-9_]{1,})', '', $link);
            $link = str_replace('.html', '', $link);
            }
      if (ereg('products_id', $link)) {
            $link = str_replace('product_info.php/products_id/',
'item/', $link);
            $link = $link . ".html";
            }
      if (ereg('manufacturers_id', $link)) {
            $link = ereg_replace('/manufacturers_id/([0-9_]{1,})', '', $link);
            $link = str_replace('.html', '', $link);
            }
      if (ereg('products_id', $link)) {
            $link = str_replace('product_info.php/products_id/',
'item/', $link);
            $link = $link . ".html";
            }
      if (
            ($page == 'specials.php') or
            ($page == 'products_new.php') or
            ($page == 'infomation.php') or
            ($page == 'sitemap.php') or
            ($page == 'privacy.php') or
            ($page == 'about_us.php') or
              ){
                   $link = str_replace('specials.php', 'sale', $link);
                   $link = str_replace('products_new.php', 'new', $link);
                   $link = str_replace('.php', '', $link);
                   $link = $link . ".html";
               }
      if (ereg('page', $link)) {
            $link = str_replace('sale/page/', 'sale/page/', $link);
            }
      if (ereg('page', $link)) {
            $link = str_replace('new/page/', 'new/page/', $link);
            }
      /*---URLの書き換え-----*/
-- 
小林


Tep-j-general メーリングリストの案内
Back to archive index