2016-12-19 3 views
0

Есть такой URL:Prestashop 1.6: правый путь, но URI имеет дополнительные символы

http://somehost.com/41-some-product 

Если я что-то в продуктах будет хорошо писать, но это неправильное поведение! Такие URL-адреса, как

http://somehost.com/41-someAbrakadabra-product 

все еще нормально, пока я не меняю идентификатор или удаляю тире, которая после id. Так я могу это исправить?

UPDATE:

Я описал проблему в неправильном направлении. Мне нужно перенаправить на эту страницу с обычным URI или иметь ответ с 404, который говорит, что такой страницы не существует. Второй способ более удобен.

+0

Здравствуйте. Я еще не понимаю вашу проблему. Не могли бы вы написать более четко? – PixelWeb

+0

Когда у меня есть request_uri **/41-someAbrakadabra-product ** У меня все еще есть доступ к этой странице - но это неправильное поведение! Я хочу или переадресовать или 404. Мне нужно перейти на эту страницу только по правильному пути: **/41-some-product ** –

+0

В мой ответ добавлено предложение. Удачи. – PixelWeb

ответ

0

Дружественный URL-адрес устанавливается вначале с именем продукта, просто удаляя недопустимые URL-адреса. Затем URL-адрес не изменился, пока вы не измените значение Friendly URL в закладке SEO на экране backoffice продукта. Проверьте это значение, чтобы написать URL-адрес, который вы хотите для своего продукта.

Перейти к меню Настройки -> SEO & URL-адреса и отключить дружественный URL-адрес. Сохраните изменения и снова включите их. Это приведет к восстановлению вашего htaccess file в случае, если старая конфигурация повлияет на ваш магазин.

Удачи.

+0

У меня есть сервер nginx для моего локального хоста. Так что воссоздать apache htaccess ничего не дает. За все, что я нашел в HTAccess есть интерес к таким направлениям: 'RewriteCond% {REQUEST_FILENAME} -s [OR] RewriteCond% {REQUEST_FILENAME} -l [OR] RewriteCond% {REQUEST_FILENAME} -d RewriteRule^ . * $ - [NC, L] RewriteRule ^. * $% {ENV: REWRITEBASE} index.php [NC, L] ' Можете ли вы объяснить, как преобразовать его в nginx и нужно ли это? –

0

Операция соответствует правилам PrestaShop. Для того, чтобы изменить их создает /override/class/dispacher.php и введите изменяющуюся "product_rule":

class Dispatcher extends DispatcherCore 
{ 
public $default_routes = array(
    'category_rule' => array(
     'controller' => 'category', 
     'rule' =>  '{id}-{rewrite}', 
     'keywords' => array(
      'id' =>   array('regexp' => '[0-9]+', 'param' => 'id_category'), 
      'rewrite' =>  array('regexp' => '[_a-zA-Z0-9\pL\pS-]*'), 
      'meta_keywords' => array('regexp' => '[_a-zA-Z0-9-\pL]*'), 
      'meta_title' =>  array('regexp' => '[_a-zA-Z0-9-\pL]*'), 
     ), 
    ), 
    'supplier_rule' => array(
     'controller' => 'supplier', 
     'rule' =>  '{id}__{rewrite}', 
     'keywords' => array(
      'id' =>   array('regexp' => '[0-9]+', 'param' => 'id_supplier'), 
      'rewrite' =>  array('regexp' => '[_a-zA-Z0-9\pL\pS-]*'), 
      'meta_keywords' => array('regexp' => '[_a-zA-Z0-9-\pL]*'), 
      'meta_title' =>  array('regexp' => '[_a-zA-Z0-9-\pL]*'), 
     ), 
    ), 
    'manufacturer_rule' => array(
     'controller' => 'manufacturer', 
     'rule' =>  '{id}_{rewrite}', 
     'keywords' => array(
      'id' =>   array('regexp' => '[0-9]+', 'param' => 'id_manufacturer'), 
      'rewrite' =>  array('regexp' => '[_a-zA-Z0-9\pL\pS-]*'), 
      'meta_keywords' => array('regexp' => '[_a-zA-Z0-9-\pL]*'), 
      'meta_title' =>  array('regexp' => '[_a-zA-Z0-9-\pL]*'), 
     ), 
    ), 
    'cms_rule' => array(
     'controller' => 'cms', 
     'rule' =>  'content/{id}-{rewrite}', 
     'keywords' => array(
      'id' =>   array('regexp' => '[0-9]+', 'param' => 'id_cms'), 
      'rewrite' =>  array('regexp' => '[_a-zA-Z0-9\pL\pS-]*'), 
      'meta_keywords' => array('regexp' => '[_a-zA-Z0-9-\pL]*'), 
      'meta_title' =>  array('regexp' => '[_a-zA-Z0-9-\pL]*'), 
     ), 
    ), 
    'cms_category_rule' => array(
     'controller' => 'cms', 
     'rule' =>  'content/category/{id}-{rewrite}', 
     'keywords' => array(
      'id' =>   array('regexp' => '[0-9]+', 'param' => 'id_cms_category'), 
      'rewrite' =>  array('regexp' => '[_a-zA-Z0-9\pL\pS-]*'), 
      'meta_keywords' => array('regexp' => '[_a-zA-Z0-9-\pL]*'), 
      'meta_title' =>  array('regexp' => '[_a-zA-Z0-9-\pL]*'), 
     ), 
    ), 
    'module' => array(
     'controller' => null, 
     'rule' =>  'module/{module}{/:controller}', 
     'keywords' => array(
      'module' =>  array('regexp' => '[_a-zA-Z0-9_-]+', 'param' => 'module'), 
      'controller' =>  array('regexp' => '[_a-zA-Z0-9_-]+', 'param' => 'controller'), 
     ), 
     'params' => array(
      'fc' => 'module', 
     ), 
    ), 
    'product_rule' => array(
     'controller' => 'product', 
     'rule' =>  '{category:/}{id}-{rewrite}{-:ean13}.html', 
     'keywords' => array(
      'id' =>   array('regexp' => '[0-9]+', 'param' => 'id_product'), 
      'rewrite' =>  array('regexp' => '[_a-zA-Z0-9\pL\pS-]*'), 
      'ean13' =>  array('regexp' => '[0-9\pL]*'), 
      'category' =>  array('regexp' => '[_a-zA-Z0-9-\pL]*'), 
      'categories' =>  array('regexp' => '[/_a-zA-Z0-9-\pL]*'), 
      'reference' =>  array('regexp' => '[_a-zA-Z0-9-\pL]*'), 
      'meta_keywords' => array('regexp' => '[_a-zA-Z0-9-\pL]*'), 
      'meta_title' =>  array('regexp' => '[_a-zA-Z0-9-\pL]*'), 
      'manufacturer' => array('regexp' => '[_a-zA-Z0-9-\pL]*'), 
      'supplier' =>  array('regexp' => '[_a-zA-Z0-9-\pL]*'), 
      'price' =>   array('regexp' => '[0-9\.,]*'), 
      'tags' =>   array('regexp' => '[a-zA-Z0-9-\pL]*'), 
     ), 
    ), 
    /* Must be after the product and category rules in order to avoid conflict */ 
    'layered_rule' => array(
     'controller' => 'category', 
     'rule' =>  '{id}-{rewrite}{/:selected_filters}', 
     'keywords' => array(
      'id' =>   array('regexp' => '[0-9]+', 'param' => 'id_category'), 
      /* Selected filters is used by the module blocklayered */ 
      'selected_filters' => array('regexp' => '.*', 'param' => 'selected_filters'), 
      'rewrite' =>  array('regexp' => '[_a-zA-Z0-9\pL\pS-]*'), 
      'meta_keywords' => array('regexp' => '[_a-zA-Z0-9-\pL]*'), 
      'meta_title' =>  array('regexp' => '[_a-zA-Z0-9-\pL]*'), 
     ), 
    ), 
); 
} 

удаления кэша/class_index.php

+0

Не могли бы вы объяснить, например, в соответствии с моим обновленным обновлением? –