2012-03-21 4 views
0

http://example.com/index.php?route=checkout/carthttp://example.com/cart으로 표시하고 싶습니다. 몇 일 전 나는 stackoverflow (http://stackoverflow.com/q/7578055/1236271)에서 대답을 발견했다. 그리고 seo_url 파일에서 필요한 변경을 수행하고 데이터베이스를 업데이트했지만 여전히 작동하지 않습니다. 내 seo_url 파일에 실수가 있습니까? 이것은 내 seo_url.php 파일입니다.OpenCart에서 사용자 정의 SEO 친화적 인 URL을 만드는 방법은 무엇입니까?

<?php 

class ControllerCommonSeoUrl extends Controller { 
public function index() { 
    // Add rewrite to url class 
    if ($this->config->get('config_seo_url')) { 
     $this->url->addRewrite($this); 
    } 
    // Decode URL 
    if (isset($this->request->get['_route_'])) { 
     $parts = explode('/', $this->request->get['_route_']); 
     foreach ($parts as $part) { 
      $query = $this->db->query("SELECT * FROM " . DB_PREFIX . "url_alias WHERE keyword = '" . $this->db->escape($part) . "'"); 

      if ($query->num_rows) { 
       $url = explode('=', $query->row['query']);     

       if ($url[0] == 'product_id') { 
        $this->request->get['product_id'] = $url[1]; 
       }     

       if ($url[0] == 'category_id') { 
        if (!isset($this->request->get['path'])) { 
         $this->request->get['path'] = $url[1]; 
        } else { 
         $this->request->get['path'] .= '_' . $url[1]; 
        } 
       }    

       if ($url[0] == 'manufacturer_id') { 
        $this->request->get['manufacturer_id'] = $url[1]; 
       }    

       if ($url[0] == 'information_id') { 
        $this->request->get['information_id'] = $url[1]; 
       } 
      } else { 
       $this->request->get['route'] = 'error/not_found'; 
      } 
     }   

     if (isset($this->request->get['product_id'])) { 
      $this->request->get['route'] = 'product/product'; 
     } elseif (isset($this->request->get['path'])) { 
      $this->request->get['route'] = 'product/category'; 
     } elseif (isset($this->request->get['manufacturer_id'])) { 
      $this->request->get['route'] = 'product/manufacturer/product'; 
     } elseif (isset($this->request->get['information_id'])) { 
      $this->request->get['route'] = 'information/information'; 
     } 
     else { 
          $query = $this->db->query("SELECT * FROM " . DB_PREFIX . "url_alias WHERE keyword = '" . $this->db->escape($this->request->get['_route_']) . "'"); 
      if ($query->num_rows) { 
       $this->request->get['route'] = $query->row['query']; 
      } 
     } 
     if (isset($this->request->get['route'])) { 
      return $this->forward($this->request->get['route']); 
     } 
    } 
} 



public function rewrite($link) { 

    if ($this->config->get('config_seo_url')) { 

     $url_data = parse_url(str_replace('&amp;', '&', $link)); 



     $url = ''; 



     $data = array(); 



     parse_str($url_data['query'], $data); 



     foreach ($data as $key => $value) { 

      if (isset($data['route'])) { 

       if (($data['route'] == 'product/product' && $key == 'product_id') || (($data['route'] == 'product/manufacturer/product' || $data['route'] == 'product/product') && $key == 'manufacturer_id') || ($data['route'] == 'information/information' && $key == 'information_id')) { 

        $query = $this->db->query("SELECT * FROM " . DB_PREFIX . "url_alias WHERE `query` = '" . $this->db->escape($key . '=' . (int)$value) . "'"); 



        if ($query->num_rows) { 

         $url .= '/' . $query->row['keyword']; 



         unset($data[$key]); 

        }     

       } elseif ($key == 'path') { 

        $categories = explode('_', $value); 



        foreach ($categories as $category) { 

         $query = $this->db->query("SELECT * FROM " . DB_PREFIX . "url_alias WHERE `query` = 'category_id=" . (int)$category . "'"); 



         if ($query->num_rows) { 

          $url .= '/' . $query->row['keyword']; 

         }       

        } 



        unset($data[$key]); 

       } 

       else { 
        $query = $this->db->query("SELECT * FROM " . DB_PREFIX . "url_alias WHERE `query` = '" . $this->db->escape($data['route']) . "'"); 

        if ($query->num_rows) { 
         $url .= '/' . $query->row['keyword']; 

         unset($data[$key]); 
        } 
       } 


      } 

     } 



     if ($url) { 

      unset($data['route']); 



      $query = ''; 



      if ($data) { 

       foreach ($data as $key => $value) { 

        $query .= '&' . $key . '=' . $value; 

       } 



       if ($query) { 

        $query = '?' . trim($query, '&'); 

       } 

      } 



      return $url_data['scheme'] . '://' . $url_data['host'] . (isset($url_data['port']) ? ':' . $url_data['port'] : '') . str_replace('/index.php', '', $url_data['path']) . $url . $query; 

     } else { 

      return $link; 

     } 

    } else { 

     return $link; 

    }  

} 

} 

?> 
+0

누구든지이 문제를 해결하거나 제안 사항을 제공합니까? – Subhra

답변

0

간단한 질문, 다시 쓰기 모듈을 켜거나 호스팅 솔루션에서 다시 쓰기 모듈을 활성화 했습니까?

그리고이 모든 작업을 수행하기 위해 좋은 .htaccess를 만들었습니까?

+0

사용 가능하며 모든 다른 사람들도 사용할 수 있습니다. 맞춤 URL을 만들려면 어떻게해야합니까? – Subhra

관련 문제