Модуль Url Rewrite Неактивен

Да, я по инструкции и делал. Апач точно снес. Нет его, все в настройках поменял в панели isp. Картинка как у вас - нет больше апача.

Хостинг ihor сказали, что в общем-то не нужно заморачиваться со связкой nginx+php-fpm, а работать nginx+apache



Либо настраивать каким-то магическим способом не понятно где (конфигурационный файл nginx, который приведен в инструкции?) правила ЧПУ. Они могут типо это и сами сделать, но за 1000 руб.

[quote name='densvi' timestamp='1430656959' post='213250']

Хостинг ihor сказали, что в общем-то не нужно заморачиваться со связкой nginx+php-fpm, а работать nginx+apache



Либо настраивать каким-то магическим способом не понятно где (конфигурационный файл nginx, который приведен в инструкции?) правила ЧПУ. Они могут типо это и сами сделать, но за 1000 руб.

[/quote]



А причем тут nginx+apache если речь о php.



Мой совет, снесите систему, то есть просто заново поставьте операционку и сделайте все сразу, а потом попробуйте поставить.

Вы php.ini, nginx.conf настраивали?

Та же история. Там же на ihor. Лучше покопаться и найти решение, чем на апач ставить и на тормозах ехать.

Без модуля seo, нормально работает (на nginx). А вот когда включаешь - нет.

[quote name='Jambolo_J' timestamp='1438245281' post='224882']

Без модуля seo, нормально работает (на nginx). А вот когда включаешь - нет.

[/quote]



Привожу пример конфигурационного файла для NGINX.


[CODE]server {

listen 80;

server_name _;

root /var/www/empty;



location = /nginx-status {

stub_status on;

access_log off;

allow 127.0.0.1;

deny all;

}



location / {

return 301 $scheme://example.com$request_uri;

}

}



################################################################################

CS-Cart (example.com)

################################################################################



upstream backend {

server unix:/tmp/fpm.sock max_fails=0;

}



server {

listen 80;

server_name example.com www.example.com;



charset utf-8;

set $root “/var/www/html”;



access_log /var/log/nginx/example.com.access.log combined;

error_log /var/log/nginx/example.com.error.log;



gzip on;

gzip_disable “msie6”;

gzip_comp_level 6;

gzip_min_length 1100;

gzip_buffers 16 8k;

gzip_proxied any;

gzip_types text/plain application/xml

application/javascript

text/css

text/js

text/xml

application/x-javascript

text/javascript

application/json

application/xml+rss

application/x-font-ttf

application/x-font-otf

application/x-font-woff

application/font-woff

image/x-icon ico

font/opentype;



client_max_body_size 100m;

client_body_buffer_size 128k;

client_header_timeout 3m;

client_body_timeout 3m;

send_timeout 3m;

client_header_buffer_size 1k;

large_client_header_buffers 4 16k;



error_page 598 = @backend;



location @statics {

rewrite ^/(\w+)/(.)$ /$2 break;

access_log off;

rewrite_log off;

expires 14d;

add_header Cache-Control public;

add_header Access-Control-Allow-Origin ;

root $root;

}



location @backend {

root $root;

proxy_read_timeout 61;

fastcgi_read_timeout 61;

try_files $uri $uri/ =404;

fastcgi_pass backend;

fastcgi_index index.php;

fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;

include fastcgi_params;

}



location ~
.(jpeg|ico|jpg|gif|png|css|js|pdf|txt|tar|wof|woff|csv|zip) {

access_log off;

try_files $uri @statics;

expires 14d;

add_header Access-Control-Allow-Origin ;

add_header Cache-Control public;

root $root;

}



location / {

if (-f $root/maintenance) {

return 503;

}

root $root;

index index.php index.html index.htm;

rewrite ^/api/(.
)$ /api.php?_d=$1&ajax_custom=1&$args last;

try_files $uri $uri/ @fallback;

}



location @fallback {

rewrite ^(.
)$ /index.php?$args last;

}



location ~ /(index|admin|api).php {

return 598;

}



location = /install/index.php {

return 598;

}



location = /var/upgrade/upgrade_4.2.4_ultimate-4.3.1_ultimate.tgz/restore.php {

return 598;

}



location ^~ /app/ {

return 404;

location = /app/addons/rus_exim_1c/exim_1c.php {

return 598;

}

}



location ^~ /app/payments/ {

return 404;

location ~ .php$ {

return 598;

}

}



location ^~ /var/database/ {

return 404;

}



location ~* .([pP][hH][pP]|[tT][pP][lL].?)$ {

return 404;

}



location ~ /.(ht|git) {

return 404;

}

}



server {

listen 443 spdy;

server_name example.com www.example.com;



charset utf-8;

set $root “/var/www/html”;



access_log /var/log/nginx/example.com.access.log combined;

error_log /var/log/nginx/example.com.error.log;



ssl on;

ssl_certificate /etc/pki/tls/certs/example.com.pem;

ssl_certificate_key /etc/pki/tls/private/example.com.key;

ssl_session_timeout 5m;

ssl_session_cache shared:SSL:16m;

ssl_stapling on;

ssl_stapling_verify on;

resolver 8.8.4.4 8.8.8.8 valid=300s;

resolver_timeout 15s;

ssl_protocols TLSv1 TLSv1.1 TLSv1.2;

ssl_ciphers HIGH:!aNULL:!MD5:!kEDH;

ssl_prefer_server_ciphers on;



gzip on;

gzip_disable “msie6”;

gzip_comp_level 6;

gzip_min_length 1100;

gzip_buffers 16 8k;

gzip_proxied any;

gzip_types text/plain application/xml

application/javascript

text/css

text/js

text/xml

application/x-javascript

text/javascript

application/json

application/xml+rss

application/x-font-ttf

application/x-font-otf

application/x-font-woff

application/font-woff

image/x-icon ico

font/opentype;



client_max_body_size 100m;

client_body_buffer_size 128k;

client_header_timeout 3m;

client_body_timeout 3m;

send_timeout 3m;

client_header_buffer_size 1k;

large_client_header_buffers 4 16k;



error_page 598 = @backend;



location @statics {

rewrite ^/(\w+)/(.)$ /$2 break;

access_log off;

rewrite_log off;

expires 14d;

add_header Cache-Control public;

add_header Access-Control-Allow-Origin ;

root $root;

}



location @backend {

root $root;

proxy_read_timeout 61;

fastcgi_read_timeout 61;

try_files $uri $uri/ =404;

fastcgi_pass backend;

fastcgi_index index.php;

fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;

fastcgi_param HTTPS on;

fastcgi_param X_FORWARDED_SERVER secure;

include fastcgi_params;

}



location ~
.(jpeg|ico|jpg|gif|png|css|js|pdf|txt|tar|wof|woff|csv|zip) {

access_log off;

try_files $uri @statics;

expires 14d;

add_header Access-Control-Allow-Origin ;

add_header Cache-Control public;

root $root;

}



location / {

if (-f $root/maintenance) {

return 503;

}

root $root;

index index.php index.html index.htm;

rewrite ^/api/(.
)$ /api.php?_d=$1&ajax_custom=1&$args last;

try_files $uri $uri/ @fallback;

}



location @fallback {

rewrite ^(.
)$ /index.php?$args last;

}



location ~ /(index|admin|api).php {

return 598;

}



location = /install/index.php {

return 598;

}



location = /var/upgrade/upgrade_4.2.4_ultimate-4.3.1_ultimate.tgz/restore.php {

return 598;

}



location ^~ /app/ {

return 404;

location = /app/addons/rus_exim_1c/exim_1c.php {

return 598;

}

}



location ^~ /app/payments/ {

return 404;

location ~ .php$ {

return 598;

}

}



location ^~ /var/database/ {

return 404;

}



location ~* .([pP][hH][pP]|[tT][pP][lL].?)$ {

return 404;

}



location ~ /.(ht|git) {

return 404;

}

}[/CODE]

Привет. Столкнулся с таким же предупреждением при инсталляции cs-cart.

Модуль URL rewrite неактивен. Витрины в подкаталогах будут недоступны.

Ставлю на vestacp. Права на файлы все выставлены как в документации.

Подскажите как это побороть?

Привет. Столкнулся с таким же предупреждением при инсталляции cs-cart.

Модуль URL rewrite неактивен. Витрины в подкаталогах будут недоступны.

Ставлю на vestacp. Права на файлы все выставлены как в документации.

Подскажите как это побороть?

Вопрос решился.

Предупреждение похоже появлялось из-за отсутствия записи на сервере DNS.

С записями всё нормально. VPS на LEMP стеке. На Айхоре. При установке также ругается. SEO модуль включить не даёт.

При этом есть абсолютная копия установки на другом VPS на Simplecloud.ru - там всё работает.

Nginx конфиги одинаковые, взятые из рекомендаций cs-cart. Добавлен только https.

Куда копать. Где-то в конфигах php-fpm вероятно....

И ещё обнаружил - подобная фигня на ihor-е получается только если включен https (и в настройках cs-cart и в конфиге nginx)

И на последок. Если отключить полностью https, затем включить SEO-модуль (он включится), затем включить https - то SEO работает (до первого отключения.)

Итак, друзья, вот партитура моей игры на бубне:
После безуспешных, нелогичных попыток что-то поменять, включить, выключить в конфигах Nginx я отчаялся и решил прибегнуть к волшебному методу от ilya123456

Вопрос решился.

Предупреждение похоже появлялось из-за отсутствия записи на сервере DNS.

Что зашифровано в этой рекомендации никто не знает, однако, совершенно ясно, что на DNS отсутствует какая-то запись :grin: .

Я решил поступить радикально и перенести A-запись своего домена на другой NameServer. И кто бы мог подумать - через несколько часов всё заработало :mrgreen: .

Единственное логическое объяснение этим танцам может крыться в том, что изначально DNS записи моего домена были назначены через некую ж*пу. Ниже я опишу в чём заключалась эта ж*па - быть может посвящённые администраторы найдут какую-то логику и объяснят нам:

Итак, магазин был приписан к субдомену new.shop.ru. При этом родительский домен shop.ru делегирован на NS Инфобокса. А вот субдомен new.shop.ru путём хитрых манипуляций (DNS txt подтверждениями собственности) был делегирован целиком на pdd.yandex.ru (DNS Яндекса). И вот уже от туда корневой A-записью направлен на ip VPS Айхора.

Я убрал эту конструкцию.

В DNS Инфобокса (где делегирован родительский домен) добавил субдомен new с соответствующими A-записями и ip.

Заработало.

Повторюсь, я не уверен, что именно это помогло. Но больше вроде было нечему.

Теперь немного пользы. В процессе ковыряний, я отработал некоторые методы, которые могут быть полезны пользователям. Вот они. (на сервере LEMP - чистый NGINX, без апач)

1. Когда вы играетесь со включением/отключением http/https в админке и в конфигах nginx очень мешаются кэши. Как на стороне CS-Cart, так и на стороне браузера. Возникают всякие циклические переадресации.

Кэш CS-Cart удаляем понятно как: стираем папки /var/cache/* - не забываем об этом.

А вот простое открытие режима "инкогнито" и стирание куков в Хроме не помогает - он настойчиво помнит https.

Чтобы починить это в адресной строке Хрома пишем chrome://net-internals/#hsts, переходим на эту страничку, вбиваем свой домен в поле "Delete domain" и жмём "Delete". Перезапускаем хром и открываем инкогнито для пущей надёжности.

2. В процессе танцев несколько раз нарывался на то, что CS-Cart упрямо прёт в https, в то время, как в админке галочка "Включить безопасное соединение в панели администратора" не стоит. Соответственно попасть в админку не выходит. Особенно это доставало при переустановке.

Можно управлять этой галочкой в обход панели администратора CS-Cart. Её значение хранится в БД. У меня не установлен на сервере phpMyAdmin, я расскажу как поправить её ручками, через ssh:

В шелл-консоли подключаемся к SQL

mysql -u пользователь_бд -p

пароль

Подключаемся к БД

USE ваша_бд;
Меняем значение записи. Соответственно Y/N - стоит/не стоит галка
UPDATE cscart_settings_objects SET value='Y' WHERE name='secure_admin';
Проверяем
SELECT name, value FROM cscart_settings_objects WHERE name='secure_admin';
Очищаем кэш, удаляя всё из /var/cache/
Удачи.

Вот мой рабочий конфиг NGINX

server {
listen 443 ssl http2;
listen 80;

########################################################################

Настройки SSL. На сервере установлен LetsEncrypt

########################################################################

ssl_certificate /etc/letsencrypt/live/YOUR_DOMAIN.RU/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/YOUR_DOMAIN.RU/privkey.pem;

# Такой формат включения ssl устарел. Он включен в директиве listen
#ssl on;


# Если оставить только 1.2 протокол, то старые браузеры не откроют сайт
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_prefer_server_ciphers on;
ssl_dhparam /etc/ssl/certs/dhparam.pem;
ssl_ciphers 'ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-DSS-AES128-GCM-SHA256:kEDH+AESGCM:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-DSS-AES128-SHA256:DHE-RSA-AES256-SHA256:DHE-DSS-AES256-SHA:DHE-RSA-AES256-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:AES:CAMELLIA:DES-CBC3-SHA:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!MD5:!PSK:!aECDH:!EDH-DSS-DES-CBC3-SHA:!EDH-RSA-DES-CBC3-SHA:!KRB5-DES-CBC3-SHA';

ssl_session_timeout 1d;
ssl_session_cache shared:SSL:50m;
ssl_stapling on;
ssl_stapling_verify on;
add_header Strict-Transport-Security max-age=15768000;

# http заголовки http://zabolotskikh.com/tips/content-security-policy/
add_header Content-Security-Policy-Report-Only "default-src https:; script-src https: 'unsafe-eval' 'unsafe-inline'; style-src https: 'unsafe-inline'; img-src https: data:; font-src https: data:; report-uri /csp-report";

########################################################################

#   Домен интернет-магазина
server_name YOUR_DOMAIN.RU www.YOUR_DOMAIN.RU;

#   Кодировка по-умолчанию
charset utf-8;

# Запрещение выдачи версии nginx в HTTP-заголовках
server_tokens off;

# для валидации Let's Encrypt
 location ~ /.well-known {
 allow all;
 }

#   Расположение логов
access_log  /var/log/nginx/YOUR_DOMAIN_access.log combined;
error_log   /var/log/nginx/YOUR_DOMAIN_error.log;



#   Основной каталог интернет-магазина
root /var/www/YOUR_FOLDER;

#   Сжатие
gzip on;
gzip_disable "msie6";
gzip_comp_level 6;
gzip_min_length  1100;
gzip_buffers 16 8k;
gzip_proxied any;
gzip_types text/plain application/xml
  application/javascript
  text/css
  text/js
  text/xml
  application/x-javascript
  text/javascript
  application/json
  image/svg+xml					 #   Я добавил
  application/xml+rss;

#   Прочие настройки
client_max_body_size            100m;
client_body_buffer_size         128k;
client_header_timeout           3m;
client_body_timeout             3m;
send_timeout                    3m;
client_header_buffer_size       1k;
large_client_header_buffers     4 16k;

#   Точка входа в интернет-магазин
location / {
    #   Папка с файлами интернет-магазина
    root /var/www/YOUR_FOLDER;

    #   Главный скрипт
    index index.php index.html index.htm;

    #   Для  работы API
    rewrite ^/api/(.*)$ /api.php?_d=$1&ajax_custom=1&$args last;

    #   Логика поиска скрипта по порядку: файл, папка, скрипт
    try_files $uri $uri/ @fallback;
	


}

#####################################################################################

Это перенаправление для водяных знаков. Надо отключить если отключить знаки!!!

#####################################################################################

location ~* ^/images/(product|category|detailed)/.*(png|jpg|jpeg|gif)$ {

if (-f $request_filename) {

rewrite ^(.*)$ /index.php?dispatch=watermark.create;

}

}

#####################################################################################

#   Правиле rewrite для модуля SEO
location @fallback {
    rewrite  ^(.*)$ /index.php?$args last;
}

#   Настройки статики, первое правило
location ~* \.(jpeg|ico|jpg|gif|png|css|js|pdf|txt|tar|gz|wof|csv|zip|xml|yml|woff|ttf) {
    access_log off;

#   Для  работы sitemap.xml  из корня
	rewrite ^/sitemap\.xml$ /index.php?dispatch=xmlsitemap.view last; 
	
#   Для  работы yandex_market.yml  из корня
	rewrite ^/yandex_market\.yml$ /index.php?dispatch=yandex_market.view last; 
	
	
#   Правило поиска статических файлов. Если файл не находится по адресу магазина, то ищем файл по правилу @statics.
#   Например если магазин расположен в подпапке dbazhenov.ru/shop/
    try_files $uri @statics;
    expires 14d;
    add_header Access-Control-Allow-Origin *;
    add_header Cache-Control public;
    root /var/www/YOUR_FOLDER;
}

#   Правило поиска статических файлов для витрин. Например, если у Вас две витрины в разных подпапках: dbazhenov.ru и dbazhenov.ru/shop/
location @statics {
    rewrite ^/(\w+)/(.*)$ /$2 break;
    access_log off;
    rewrite_log off;
    expires 14d;
    add_header Cache-Control public;
    add_header Access-Control-Allow-Origin *;
    root /var/www/YOUR_FOLDER;
}

#   Обрабатываем PHP скрипты. Магия
location ~ \.php$ {
    root /var/www/YOUR_FOLDER;
    proxy_read_timeout 61;
    fastcgi_read_timeout 61;
    try_files $uri $uri/ =404;
    #   Путь до сокета демона PHP-FPM
    fastcgi_pass  unix:/run/php/php7.0-fpm.sock;
    fastcgi_index index.php;
    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
	# REQUEST_URI включили по требованию водяных знаков, но по моему он и така включается в присоединяемом ниже файле fastcgi_params
	fastcgi_param REQUEST_URI $request_uri;
    include fastcgi_params;
}

Ограничиваем возвожность запуска php в каталогах. Для безопасности.

location /app/ {
        deny all;

        #   Разрешаем запуск скрипта обмена данными с 1С.
        location ^~ /app/addons/rus_exim_1c/exim_1c.php {
            allow all;
        }
}

#   Разрешаем запуск скриптов способов оплаты
location /app/payments/ {
        allow all;
}

#   Запрещаем PHP в папке /design
location /design/ {
allow all;
        location ~* \.([tT][pP][lL]|[pP][hH][pP].?)$ {
        deny all;
        }
}

#   Запрещаем PHP в папке /images
location /images/ {
    allow all;
    location ~* \.([pP][hH][pP].?)$ {
        deny all;
    }
}

#   Разрешаем только статику в папке /var
location /var/ {
    deny all;
    location ~* \.(js|css|png|jpg|gz|xml|yml)$ {
        allow all;
        expires 1M;
        add_header Cache-Control public;
        add_header Access-Control-Allow-Origin *;
    }
}

#   Закрываем доступ к бэкапам базы данных интернет-магазина (папка /var/database/) с наружи
location /var/database/ {
    deny all;
}

#   Хранилище резервных копий шаблонов
location /var/skins_repository/ {
    allow all;
    location ~* \.([tT][pP][lL]|[pP][hH][pP].?)$ {
        deny all;
    }
}

#   Обработка API
location ~* api/ {
    rewrite ^/api/(.*)$ /api.php?_d=$1&ajax_custom=1&$args last;
}

#   Запрвещаем .htaccess и .htpasswd
location ~ /\.ht {
    deny  all;
}

}

Актуально для конфигурации с Apache2.

Мне помог вот этот пункт из инструкции:https://www.cs-cart.ru/docs/4.4.x/install/apache/install_apache.html

Включим AllowOverride для возможности использования .htaccess в директориях

Две команды по очереди:

sudo sed -i 's/AllowOverride None/AllowOverride All/g' /etc/apache2/sites-enabled/000-default.conf

sudo sed -i 's/AllowOverride None/AllowOverride All/g' /etc/apache2/apache2.conf

И по хорошему нужно рестартовать Apache2.

После безуспешных, нелогичных попыток что-то поменять, включить, выключить в конфигах Nginx я отчаялся и решил прибегнуть к волшебному методу от ilya123456

Что зашифровано в этой рекомендации никто не знает, однако, совершенно ясно, что на DNS отсутствует какая-то запись :grin: .
Я решил поступить радикально и перенести A-запись своего домена на другой NameServer. И кто бы мог подумать - через несколько часов всё заработало :mrgreen: .
Единственное логическое объяснение этим танцам может крыться в том, что изначально DNS записи моего домена были назначены через некую ж*пу.


:mrgreen: Устанавливал СС на потестировать. В этот раз настройку производил без прописаных A-записей на DNS. Прописав в локальном hosts адрес к которому обращаться. Встретил в очередной раз это сообщение. [background=#fcf8e3]Модуль URL rewrite неактивен. Витрины в подкаталогах будут недоступны. [/size][/background]
Помня эту историю прописал A-запись для своего домена и подождав сутки пока DNS обновится чтоб наверняка. Ошибки этой больше не встретил.

Пытаюсь поднять запустить cs-cart в окружении контейнеров docker.

Создал образ на базе Ubuntu 18.04.
Права на директории установил.
Сначала попробовал на связке Apache2 + PHP 7.3.

Проблема с “Модуль URL rewrite неактивен. Витрины в подкаталогах будут недоступны.”. Если установить с данным предупреждением и демо-данными, то на витринах формируются ссылки не ЧПУ и при попытке перейти попадаем на 404. При этом, если в браузере вбить ЧПУ ссылку, то карточка товара грузится.

Пытался бороться с данной проблемой модуля СЕО, но не получилось, хотя сам по себе модуль rewrite работал и через .htaccess правила отрабатывались. PHP info показывал, что модуль активен.

Далее попробовал пересобрать контейнер на связке Nginx + PHP-FPM + PHP 7.3.
Проблема осталась по прежнему. Попытался использовать и конфиги, которые выше указаны в данной теме. SSL отключен везде.

В контейнере устанавливаю nginx, php7.3-fpm, php7.3-curl, php7.3-cli, php-memcache, php-memcached, php7.3-mysql, php7.3-imagick, php7.3-mail, php7.3-intl, php7.3-zip, php7.3-xml, php7.3-json, php7.3-mbstring

Чего ещё может не хватать cs-cart, для работы модуля SEO?

Вопрос до сих пор актуален. Готовых рецептов по сборке в Docker не нашёл.