Удалить index.php? Route = common / home из OpenCart

В настоящее время у меня есть User SEO URL's настроен на Да в OpenCart Admin.

System -> Settings -> Store -> Server -> User SEO URL's

Пока что все теги и ссылки на SEO работают; команда сделала желаемый эффект.

Однако для главной страницы и нескольких других ссылок; как удалить:

index.php? маршрута = общий / дом

Из URL-адреса? Должен ли я буквально делать поиск и замену в файлах PHP с жестким кодом и повышать риск или есть другой способ?

(без вздутия, т. е. бедных любительских инструментов, таких как vQmod)

Чтобы просто удалить это, вы можете сделать базовую замену в /catalog/controller/common/seo_url.php

Найти:

 return $link; 

Перед этим на новой строке поставьте:

 $link = str_replace('index.php?route=common/home', '', $link); 

Редактировать по TheBlackBenzKid: если вы хотите, чтобы полный SEO просто использовал эту строку, а не выше:

 $link = str_replace('index.php?route=', '', $link); 

Также убедитесь, что URL-адреса SEO включены в панели администратора магазина.

Мне очень нравится решение Виктора Шредера выше, потому что это простота. Благодаря! Я создал vQmod, основанный на его моделях кода, в случае, если это было бы полезно кому угодно. вот код:

 <modification> <file name="system/library/url.php"> <operation> <search position="before"><![CDATA[$url .= 'index.php?route=' . $route;]]></search> <add><![CDATA[ if ('common/home' == $route) { if ($args) { $url .= '?' . str_replace('&', '&amp;', '&' . ltrim($args, '&')); } } else { ]]></add> </operation> <operation> <search position="before"><![CDATA[foreach ($this->rewrite as $rewrite) {]]></search> <add><![CDATA[ } ]]></add> </operation> </file> <file name="catalog/controller/common/seo_url.php"> <operation> <search position="replace"><![CDATA[parse_str($url_info['query'], $data);]]></search> <add><![CDATA[ if (isset($url_info['query'])) parse_str($url_info['query'], $data); ]]></add> </operation> </file> </modification> 

Предыдущие «решения» неверны, потому что они атакуют перевод URL-адреса SEO. Вы хотите иметь дело с генерации URL-адресов внутри OpenCart.

Давайте сделаем это простым. Перейдите в /system/library/url.php и посмотрите public function link на public function link . Замените функцию этой версией:

 public function link($route, $args = '', $connection = 'NONSSL') { if ('NONSSL' == $connection) { $url = $this->url; } else { $url = $this->ssl; } if ('common/home' == $route) { if ($args) { $url .= '?' . str_replace('&', '&amp;', '&' . ltrim($args, '&')); } } else { $url .= 'index.php?route=' . $route; if ($args) { $url .= str_replace('&', '&amp;', '&' . ltrim($args, '&')); } } foreach ($this->rewrite as $rewrite) { $url = $rewrite->rewrite($url); } return $url; } 

Просто так. Я не могу поверить, почему это не в ядре OpenCart.

РЕДАКТИРОВАТЬ:

Я запускаю некоторые тесты, и если URL-адреса SEO включены, становится необходимым сделать одно редактирование в /catalog/controller/common/seo_url.php чтобы избежать ошибки «Неопределенный индекс».

Внутри public function rewrite эту строку:

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

С этим:

 if (isset($url_info['query'])) parse_str($url_info['query'], $data); 

Теперь это действительно работает.

Как насчет замены ссылки на логотип с помощью <?php echo $base; ?> <?php echo $base; ?> . Он сделает ссылку на базовый домен и удалит index.php?route=common/home .

Решение Jay не работает для меня, после редактирования я получаю пустой экран. Поэтому я сделал новый:

Поместите строку до:

 return $link; 

Вместо того, чтобы после:

 public function rewrite($link) { 

Итак, я использую 1.5.5.1, и ни один ответ на этот вопрос не решил мою проблему. Однако, объединив ответы от @Jay Gilford , @TheBlackBenzKid и @rkaartikeyen, я придумал полностью работающее решение.

Не забудьте включить seo urls, как показано @TheBlackBenzKid .

Объяснение можно найти ниже кода.

 [PHP]
 класс ControllerCommonSeoUrl расширяет контроллер {
     public function index () {
         // Добавить переписать в класс url
         if ($ this-> config-> get ('config_seo_url')) {
             $ This-> url-> addRewrite ($ это);
         }

         // Расшифровать 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 / info';
             } elseif (isset ($ this-> request-> get ['information_id'])) {
                 $ this-> request-> get ['route'] = 'информация / информация';
             } else {
                 $ this-> request-> get ['route'] = $ this-> request-> get ['_ route_'];
             }

             if (isset ($ this-> request-> get ['route'])) {
                 return $ this-> forward ($ this-> request-> get ['route']);
             }
         }
     }

     public function rewrite ($ link) {
         $ url_info = parse_url (str_replace ('&', '&', $ link));

         $ url = ''; 

         $ data = array ();

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

         foreach ($ data as $ key => $ value) {
             if (isset ($ data ['route'])) {
                 if (($ data ['route'] == 'product / product' && $ key == 'product_id') || (($ data ['route'] == 'product / manufacturer / info' || $ data ['route'] == 'product / product') && $ key == 'manufacturer_id') || ($ data ['route'] == 'информация / информация' && $ key == 'information_id')) {
                     $ query = $ this-> db-> query ("SELECT * FROM". DB_PREFIX. "url_alias WHERE` query` = '". $ this-> db-> escape ($ key.' = '. (int) $ стоимость) . "'");

                     if ($ query-> num_rows) {
                         $ url. = '/'.  $ Query-> строка [ 'ключевое слово'];

                         переменные не установлены ($ данные [$ ключ]);
                     }                   
                 } 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-> строка [ 'ключевое слово'];
                         }                           
                     }

                     переменные не установлены ($ данные [$ ключ]);
                 }
             }
         }

         if ($ url) {
             переменные не установлены ($ данные [ 'маршрут']);

             $ query = '';

             if ($ data) {
                 foreach ($ data as $ key => $ value) {
                     $ query. = '&'.  $ key.  знак равно  $ Значение;
                 }

                 if ($ query) {
                     $ query = '?'  ,  trim ($ query, '&');
                 }
             }

             return $ url_info ['scheme'].  ': //'.  $ url_info ['host'].  (isset ($ url_info ['port'])? ':'. $ url_info ['port']: '').  str_replace ('/ index.php', '', $ url_info ['path']).  $ url.  $ Запроса;
         } else {
             $ link = str_replace ('index.php? route =', '', $ link);
             return $ link;
         }
     }   
 }

По-видимому, @Jay Gilford и @TheBlackBenzKid решают проблему правильности написания URL-адресов на странице.

 Строка 113

 $ link = str_replace ('index.php? route =', '', $ link);

Но, похоже, он нарушает URL-адреса, поскольку контроллер не может найти страницы и поэтому возвращается на страницу с ошибкой.

 Строка 38 - 40

 } else {
     $ this-> request-> get ['route'] = 'error / not_found';   
 }

Решение @ rkaartikeyen решает эту проблему, установив текущий маршрут на запрошенный маршрут

 Строка 51 - 53

 else {
     $ this-> request-> get ['route'] = $ this-> request-> get ['_ route_'];
 }

Я пришел поздно, но мое решение может быть полезно для других (проверено на Opencart 2.0.3.1):

Откройте консоль MySQL и запустите этот запрос (измените YOURDATABASE с помощью своего имени db):

 INSERT INTO `YOURDATABASE`.`url_alias` (`url_alias_id`, `query`, `keyword`) VALUES (NULL, 'common/home', ' '); 

Как это работает:

Трюк состоит в добавлении WHITE SPACE ('') для ключевого слова column, если вы вставляете пустую строку (''), это обходное решение не работает, и URL-ревертер снова вернется index.php? Route = common / Главная.

Шаг 01. Включите URL-адрес USE SEO в настройках вашего сервера магазина.

Перейдите в «Систему» ​​и нажмите «Настройки». Найдите магазин, который хотите изменить, и нажмите ссылку «Изменить» справа. Наконец, перейдите на вкладку «Сервер» и установите радиоприемник URL-адреса «Да» и сохраните настройки.

Примечание. Ключевые слова не будут созданы для вас автоматически. У вас также должен быть включен mod_rewrite Apache. Большинство веб-хостов будут иметь это по умолчанию. Шаг 3 этого руководства объяснит, как добавить ключевые слова.

Шаг 02. Измените некоторый контент в вашем файле .htaccess, чтобы сделать вашу домашнюю страницу URL-адрес Friendly

Перейдите на панель управления хостом и отредактируйте файл .htaccess. Иногда этот файл скрыт, чтобы отобразить его, вы можете щелкнуть мышью на файловом менеджере панели управления веб-хоста и пометить опцию show hidden files, а затем кнопку «go».

После того как вы найдете файл .htaccess, измените следующие строки:

 RewriteBase / RewriteRule ^sitemap.xml$ index.php?route=feed/google_sitemap [L] RewriteRule ^googlebase.xml$ index.php?route=feed/google_base [L] RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_URI} !.*\.(ico|gif|jpg|jpeg|png|js|css) RewriteRule ^([^?]*) index.php?_route_=$1 [L,QSA] 

Для того, чтобы:

 RewriteBase / RewriteRule ^sitemap.xml$ index.php?route=feed/google_sitemap [L] RewriteRule ^googlebase.xml$ index.php?route=feed/google_base [L] RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_URI} !.*\.(ico|gif|jpg|jpeg|png|js|css) RewriteRule ^([^?]*) index.php?_route_=$1 [L,QSA] RewriteCond %{QUERY_STRING} ^route=common/home$ RewriteRule ^index\.php$ http://www.yourwebsite.co.uk? [R=301,L] 

Если вы сделаете шаг выше своей домашней страницы, это изменится примерно так: http://yourwebsite.com/index.php?route=common/home : http://yourwebsite.com

Шаг 03. Введите ключевые слова SEO для URL-адреса вручную. Наконец, вам нужно ввести ключевые слова SEO для каждой страницы, информации, продукта и категории, в которой вы хотите переписать URL. Вы можете найти поле для ключевых слов SEO на вкладке «Данные» при редактировании и создании элементов.

Как только вы введете ключевые слова SEO, ваш URL будет работать.

После того, как вы выполнили все эти инструкции, вы можете начать пользоваться преимуществами более высокого рейтинга, увеличения трафика и большего количества клиентов.

/catalog/controller/common/seo_url.php

Откройте файл и замените приведенный ниже код.

 <?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/info'; } elseif (isset($this->request->get['information_id'])) { $this->request->get['route'] = 'information/information'; }else { $this->request->get['route'] = $this->request->get['_route_']; } 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/info' || $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 { $url .= '/'.$value; } } } 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; } } } ?> не <?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/info'; } elseif (isset($this->request->get['information_id'])) { $this->request->get['route'] = 'information/information'; }else { $this->request->get['route'] = $this->request->get['_route_']; } 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/info' || $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 { $url .= '/'.$value; } } } 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; } } } ?> не <?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/info'; } elseif (isset($this->request->get['information_id'])) { $this->request->get['route'] = 'information/information'; }else { $this->request->get['route'] = $this->request->get['_route_']; } 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/info' || $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 { $url .= '/'.$value; } } } 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; } } } ?> не <?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/info'; } elseif (isset($this->request->get['information_id'])) { $this->request->get['route'] = 'information/information'; }else { $this->request->get['route'] = $this->request->get['_route_']; } 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/info' || $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 { $url .= '/'.$value; } } } 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; } } } ?> 

—————— ГДЕ ИЗМЕНЕНИЕ ————————-

Нижняя строка i добавлена ​​в Public Function index () также Public Function rewrite.

 else { this->request->get['route'] = $this->request->get['_route_']; } 

Функция index () Выполните так:

  1. Получить запрос из htaccss "? Route = $ 1" (Пример: URL-адрес выглядит как site.com/shirts)
  2. поэтому маршрут – рубашки
  3. теперь функция проверки «рубашек» найдена в таблице url_alias, если ее обнаружено, тогда ее можно сделать varable подобно index.php? categoryID = Value из таблицы url_alias.
  4. Или, если в таблице url_alias для рубашек нет записи, тогда ее проверки показывают, что это некоторые другие страницы, такие как информация или производитель, если она обнаружила, что она делает переменную get. Пример index.php? Route = информация / информация или index.php? Route = продукт / производитель / информация.
  5. Но его проверка не найдена в макетах. Поэтому я добавил блок «Код в другом», который устанавливает маршрут в переменную get как this index.php? Route = < route >
  6. Таким образом, в функциях index () его работы прекрасны. Как и то же, что я сделал в функции перезаписи.

я получил это http://www.antropy.co.uk/index.php/blog/one-quick-opencart-seo-tip-to-avoid-a-duplicate-home-page/ работал для меня в удалении кода для моей домашней страницы

В файле \ system \ library \ response.php добавьте следующую строку в начале вывода публичной функции ()

 if (!defined('HTTP_CATALOG')) $this->output = str_replace(array('index.php?route=common/home', '?route=common/home'), '', $this->output); 

Для этого я создал VQMOD. Бесплатно скачать здесь: http://www.opencart.com/index.php?route=extension/extension/info&extension_id=14683

Работает хорошо.

Чтобы удалить index.php?route= из URL-адресов, я просто рекомендую отредактировать файл .htaccess .

Просто добавьте это:

 RewriteCond %{THE_REQUEST} \ /index\.php\?_route_=?([^&\ ]*) RewriteRule ^ /%1? [L,R] 

У меня нет никаких проблем. Просто помните, что вам нужно включить RewriteEngine . Найдите эту строку: RewriteEngine On . Если нет, пропустите его перед кодом выше.