1

Я установил Prestashop 1.6 на своем локальном сервере Wamp, и он работал нормально. Когда я переместил этот магазин в настоящий онлайн-домен, он показывает, что «эта веб-страница имеет цикл переадресации» в хроме и «страница не перенаправляется должным образом» в Firefox. Кажется, что какая-то конфигурация была пропущена. Я изменил значения в ps_shop_url и внесли изменения в htaccess, но все-таки остался прежним.Проблема с переадресацией в prestashop 1.6

Пожалуйста, помогите

+0

Доступен ли бек-офис? – gskema

+0

У этой проблемы тоже есть – user2999253

ответ

0
  • Перейти к столу "ps_configuration" и найти записи PS_SHOP_DOMAIN и PS_SHOP_DOMAIN_SSL, установите правильные значения.

  • Перейти к столу «ps_shop_url» и установить правильные значения, заботиться, если у вас есть суб-магазины или виртуальный хост, большинство ошибок приходят отсюда. Вот Exemple: http://i.stack.imgur.com/J947r.jpg

  • В файле конфигурации/settings.inc.php редактировать это => определить ('_ DB_NAME_', 'your_datase_name');

  • Удалите .htaccess в корне папки приложения.

  • Восстановите .htaccess в бэк-офисе, отключив и включив упрощенные URL-адреса.

-1

ответ Оливер подходит, но вот если вы хотите сделать это программно (с помощью, например, для копирования настроек для создания нового экземпляра на одном домене):

/** 
* Update the access file of the new sub-domain. Otherwise the user will 
* constantly be redirected to the setup. 
* 
* @param $errorMessage String array to return the error message. 
* @param $name String name of the subdomain to update. 
* 
* @return Boolean 
*/ 
private function updateAccessFile(&$errorMessage, $name){ 

    $success = false; 

    $fileContent = file_get_contents(realpath(dirname(__FILE__)) . '/../../' . $name . "/.htaccess"); 

    if ($fileContent !== false){ 

     $filcontent = str_replace("setup", $name, $fileContent); 

     $success = boolval(file_put_contents(realpath(dirname(__FILE__)) . '/../../' . $name . "/.htaccess", $filcontent)); 
    } 

    if (!$success){ 

     $errorMessage[] = parent::getErrorMessage("SUBDOMAIN_CREATION_CONF_FILE_ERR", "We are not able to update the prestashop main access file.");  
    } 

    return $success; 
} 


/** 
* Update the configuration file with the configuration for the new subdomain 
* in order to access the sub-domain affiliated database. 
* 
* @param $errorMessage String array to return the error message. 
* @param $name String name of the subdomain to update. 
* 
* @return Boolean 
*/ 
private function updateConfigurationFile(&$errorMessage, $name){ 

    $counter = 0; 

    $reader = fopen(realpath(dirname(__FILE__)) . '/../../' . $name .'/config/settings.inc.php', 'r'); 
    $writter = fopen(realpath(dirname(__FILE__)) . '/../../' . $name .'/config/temp.txt', 'w'); 

    while (!feof($reader)) { 

     $line = fgets($reader); 

     if (strpos(strtoupper($line), '_DB_SERVER_') !== false) { 

     $line = "define('_DB_SERVER_', '127.0.0.1');\n"; 

     $counter++; 
     } 
     elseif (strpos(strtoupper($line), '_DB_NAME_') !== false) { 

     $line = "define('_DB_NAME_', '" . $name . "');\n"; 

     $counter++; 
     } 
     elseif (strpos(strtoupper($line), '_COOKIE_KEY_') !== false and !empty($this->fetchEncryptionKey())) { 

     $line = "define('_COOKIE_KEY_', '" . $this->saltKey . "');\n"; 

     $counter++; 
     } 


     fputs($writter, $line); 
    } 

    fclose($reader); 

    fclose($writter); 

    if ($counter > 0){ 

     rename(realpath(dirname(__FILE__)) . '/../../' . $name .'/config/temp.txt', realpath(dirname(__FILE__)) . '/../../' . $name .'/config/settings.inc.php'); 

    } 
    else{ 

     unlink(realpath(dirname(__FILE__)) . '/../../' . $name .'/config/temp.txt'); 
    } 

    if ($counter !== 3){ 

     $errorMessage[] = parent::getErrorMessage("SUBDOMAIN_CREATION_CONF_FILE_ERR", "We are not able to update prestashop configuration file."); 
    } 

    return (empty($errorMessage) ? true : false); 
} 

И хранимую процедуру для базы данных:

DELIMITER $$ 

CREATE PROCEDURE setupStore(IN shopName VARCHAR(50), IN domain VARCHAR(50), IN encryptionKey CHAR(56), OUT success BOOLEAN) 

BEGIN 
    DECLARE fail BOOLEAN DEFAULT false; 

    DECLARE CONTINUE HANDLER FOR SQLEXCEPTION SET fail = true; 

    START TRANSACTION; 

    SET success = false; 

    SET @shop = shopName; 

    SET @domain = domain; 

    SET @uri = CONCAT('/', shopName, '/'); 


    SET @query = 'UPDATE ps_shop s INNER JOIN ps_shop_url su ON s.id_shop = su.id_shop SET s.name=?, su.domain=?, su.domain_ssl=?, su.physical_uri=? WHERE s.id_shop=1'; 

    PREPARE statement FROM @query; 

    EXECUTE statement USING @shop, @domain, @domain, @uri; 



    SET @query = CONCAT('UPDATE ps_configuration SET value= ? where name=', QUOTE('PS_SHOP_DOMAIN'), 'OR name=', QUOTE('PS_SHOP_DOMAIN_SSL')); 

    PREPARE statement FROM @query; 

    EXECUTE statement USING @domain; 


    SET @query = CONCAT('UPDATE ps_configuration SET value= ? where name=', QUOTE('PS_SHOP_NAME')); 

    PREPARE statement FROM @query; 

    EXECUTE statement USING @shop; 


    DELETE FROM pc_import_config; 

    SET @query = 'INSERT INTO pc_import_config(cookie_key) VALUES(?)'; 

    SET @key = encryptionKey; 

    PREPARE statement FROM @query; 

    EXECUTE statement USING @key; 


    IF fail THEN 

     ROLLBACK; 
    ELSE 

     COMMIT; 

     SET success = true; 
    END IF; 

    DEALLOCATE PREPARE statement; 

END$$ 

DELIMITER ; 

Примечание: pc_import_config не является реальным PrestaShop table, я использую эту таблицу для хранения в памяти ключа encryption_key, используемого при импорте данных из DataImporter (абстрактный класс для импорта данных из разных источников данных в разные установки), чтобы использовать его в subDomainManager (абстрактный класс для создания экземпляра субдомены с разных базовых настроек, а затем управление ими).

Джонатан Родитель-Левек из Монреаля

4

В ps_shop_url таблице вы должны установить домен = локальный, domain_ssl = локальный & physical_uri =/MyProject/

В ps_configuration множестве PS_SHOP_DOMAIN_SSL & PS_SHOP_DOMAIN на локальный

Также перейдите по ссылке BackOffice -> Настройки -> SEO & и нажмите [Сохранить] - это приведет к восстановлению вашего файла .htaccess и добавит/myProject/где необходимо.

+0

спасибо за вашу удивительную помощь. –

0

Сначала проверьте таблицу _shop_url и набор нижеуказанных,

  • домен = локальный
  • domain_ssl = локальный
  • physical_uri =/yourfoldername/

и дон Не забудьте использовать файл .htaccess.

Если у вас нет файла .htaccess для локального развертывания, нажмите ссылку ниже. Не забудьте заменить строку yourproject с именем вашей папки.

.htaccess file for localhost deployment

Смежные вопросы