Правила для mod_rewrite должны начинаться так
RewriteEngine On
RewriteBase /
где RewriteEngine On включает mod_rewrite, а RewriteBase / устанавливает путь относительно которого будут работать правила mod_rewriteЕсли магазин установлен в корень сайта то в RewriteBase пишется слеш, если магазин установлен в папку то надо указывать эту папку.
Например, если магазин установлен в папку shop то надо писать RewriteBase /shop
Заканчиваться правила должны вот так
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([^?]*) index.php?_route_=$1 [L,QSA]
Это, так сказать, последняя инстанция действия которой можно описать примерно так:Если для запроса нет соответствующего файла ( RewriteCond %{REQUEST_FILENAME} !-f) или директории ( RewriteCond %{REQUEST_FILENAME} !-d) то отправлять запрос скрипту index.php в параметре _route_ со всеми параметрами ( RewriteRule ^([^?]*) index.php?_route_=$1 [L,QSA]) и пусть скрипт сам принимает решение что с этим запросом делать.
Все свои правила надо добавлять между этими блоками
В файле .htaccess вот этот блок
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([^?]*) index.php?_route_=$1 [L,QSA]
RewriteCond %{HTTP_HOST} ^barbados-fs\.ru$ [NC]
RewriteRule ^(.*)$ http://www.barbados-fs.ru/$1 [R=301,L]
надо исправить на такой
RewriteEngine On
RewriteBase /
RewriteCond %{HTTP_HOST} ^barbados-fs\.ru$ [NC]
RewriteRule ^(.*)$ http://www.barbados-fs.ru/$1 [R=301,L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([^?]*) index.php?_route_=$1 [L,QSA]
либо с использованием универсальной записи, не привязанной к конкретному домену, как предложил Vladzimir
RewriteEngine On
RewriteBase /
RewriteCond %{HTTP_HOST} !^$ [NC]
RewriteCond %{HTTP_HOST} !^www\. [NC]
RewriteRule ^(.*)$ http://www.%{HTTP_HOST}/$1 [R=301,L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([^?]*) index.php?_route_=$1 [L,QSA]
RewriteCond %{HTTP_HOST} !^www\. [NC]это не откуда редиректить, это условие при истинности которого исполняется следующее за условием правилоВ данном случае уловие на человеческом языке звучит примерно так: если HTTP_HOST не начинается с www. без учета регистра символов
Кроме этого я добавил в начало ещё одно условие которое проверяет не пустая ли у нас HTTP_HOST
RewriteRule ^(.*)$ http://www.%{HTTP_HOST}/$1 [L,R=301]А это правило которое выполнится если предыдущее условие истина.В условии я убрал (.*)$ - это лишнее и никак не используется ... этот кусок условия звучит так: могут быть любые символы до конца строки которые надо запомнить... А нам пофиг что там может или не может быть и запоминать нам это не надо...
(.*)$ может понадобиться только для редиректа с www на без www так как нам надо получить HTTP_HOST без www
Это вот так делается
RewriteCond %{HTTP_HOST} !^$ [NC]
RewriteCond %{HTTP_HOST} ^www\.(.*)$ [NC]
RewriteRule ^(.*)$ http://%1/$1 [R=301,L]
Если после настройки переадресации на www не получается зайти в админку то скорее всего ты устанавливал магазин по адресу без www
Что-бы работало надо изменить адрес в конфигах и в настройках на адрес с www
По поводу robots.txt почитай тут http://help.yandex.r...d=996567#996571
Особенно обрати внимание на это примечание