Ещё один топик про неработающие ЧПУ

sche

Гуру форума
Регистрация
16 Ноя 2017
Сообщения
162
Реакции
68
Добрый день, проблема довольно классическая: что-то не работает при включённом ЧПУ. В моём случае это товары и картинки к ним. НО при этом остальные картинки и страницы на сайте работают. Вот так выглядят товары в каталоге:
1.png
Если клацнуть по любому товару, скажет, что "Страница, которую вы ищете, не найдена".
Что интересно,
1) Сайт на локалке, так что влияние чар кривого хостинга вроде как сводится к минимуму;
2) Это копия другого сайта, где ЧПУ нормально работает.
.htaccess уже пробовал пересоздать, разумеется. Сейчас он выглядит так:
HTML:
# ~~start~~ Do not remove this comment, Prestashop will keep automatically the code outside this comment when .htaccess will be generated again
# .htaccess automaticaly generated by PrestaShop e-commerce open-source solution
# http://www.prestashop.com - http://www.prestashop.com/forums

<IfModule mod_rewrite.c>
<IfModule mod_env.c>
SetEnv HTTP_MOD_REWRITE On
</IfModule>

RewriteEngine on


#Domain: electro
RewriteRule . - [E=REWRITEBASE:/]
RewriteRule ^api$ api/ [L]

RewriteRule ^api/(.*)$ %{ENV:REWRITEBASE}webservice/dispatcher.php?url=$1 [QSA,L]

# Images
RewriteRule ^([0-9])(\-[_a-zA-Z0-9-]*)?(-[0-9]+)?/.+\.jpg$ %{ENV:REWRITEBASE}img/p/$1/$1$2$3.jpg [L]
RewriteRule ^([0-9])([0-9])(\-[_a-zA-Z0-9-]*)?(-[0-9]+)?/.+\.jpg$ %{ENV:REWRITEBASE}img/p/$1/$2/$1$2$3$4.jpg [L]
RewriteRule ^([0-9])([0-9])([0-9])(\-[_a-zA-Z0-9-]*)?(-[0-9]+)?/.+\.jpg$ %{ENV:REWRITEBASE}img/p/$1/$2/$3/$1$2$3$4$5.jpg [L]
RewriteRule ^([0-9])([0-9])([0-9])([0-9])(\-[_a-zA-Z0-9-]*)?(-[0-9]+)?/.+\.jpg$ %{ENV:REWRITEBASE}img/p/$1/$2/$3/$4/$1$2$3$4$5$6.jpg [L]
RewriteRule ^([0-9])([0-9])([0-9])([0-9])([0-9])(\-[_a-zA-Z0-9-]*)?(-[0-9]+)?/.+\.jpg$ %{ENV:REWRITEBASE}img/p/$1/$2/$3/$4/$5/$1$2$3$4$5$6$7.jpg [L]
RewriteRule ^([0-9])([0-9])([0-9])([0-9])([0-9])([0-9])(\-[_a-zA-Z0-9-]*)?(-[0-9]+)?/.+\.jpg$ %{ENV:REWRITEBASE}img/p/$1/$2/$3/$4/$5/$6/$1$2$3$4$5$6$7$8.jpg [L]
RewriteRule ^([0-9])([0-9])([0-9])([0-9])([0-9])([0-9])([0-9])(\-[_a-zA-Z0-9-]*)?(-[0-9]+)?/.+\.jpg$ %{ENV:REWRITEBASE}img/p/$1/$2/$3/$4/$5/$6/$7/$1$2$3$4$5$6$7$8$9.jpg [L]
RewriteRule ^([0-9])([0-9])([0-9])([0-9])([0-9])([0-9])([0-9])([0-9])(\-[_a-zA-Z0-9-]*)?(-[0-9]+)?/.+\.jpg$ %{ENV:REWRITEBASE}img/p/$1/$2/$3/$4/$5/$6/$7/$8/$1$2$3$4$5$6$7$8$9$10.jpg [L]
RewriteRule ^c/([0-9]+)(\-[\.*_a-zA-Z0-9-]*)(-[0-9]+)?/.+\.jpg$ %{ENV:REWRITEBASE}img/c/$1$2$3.jpg [L]
RewriteRule ^c/([a-zA-Z_-]+)(-[0-9]+)?/.+\.jpg$ %{ENV:REWRITEBASE}img/c/$1$2.jpg [L]
# AlphaImageLoader for IE and fancybox
RewriteRule ^images_ie/?([^/]+)\.(jpe?g|png|gif)$ js/jquery/plugins/fancybox/images/$1.$2 [L]

# Dispatcher
RewriteCond %{REQUEST_FILENAME} -s [OR]
RewriteCond %{REQUEST_FILENAME} -l [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^.*$ - [NC,L]
RewriteRule ^.*$ %{ENV:REWRITEBASE}index.php [NC,L]
</IfModule>

AddType application/vnd.ms-fontobject .eot
AddType font/ttf .ttf
AddType font/otf .otf
AddType application/font-woff .woff
AddType font/woff2 .woff2
<IfModule mod_headers.c>
   <FilesMatch "\.(ttf|ttc|otf|eot|woff|woff2|svg)$">
     Header set Access-Control-Allow-Origin "*"
   </FilesMatch>
</IfModule>

#If rewrite mod isn't enabled
ErrorDocument 404 /index.php?controller=404

# ~~end~~ Do not remove this comment, Prestashop will keep automatically the code outside this comment when .htaccess will be generated again
Так выглядят правила путей:
yYUIx9a.png
Ещё пробовал убрать из пути к товару {-:id_product_attribute}, но система сказала, что я много на себя беру. А ещё пробовал восстановить дефолтный путь к странице, но это не помогло, разумеется.
Буду благодарен за любую помощь. Это Presta 1.7.2.4.
 
Добрый день, проблема довольно классическая: что-то не работает при включённом ЧПУ. В моём случае это товары и картинки к ним. НО при этом остальные картинки и страницы на сайте работают. Вот так выглядят товары в каталоге:
1.png
Если клацнуть по любому товару, скажет, что "Страница, которую вы ищете, не найдена".
Что интересно,
1) Сайт на локалке, так что влияние чар кривого хостинга вроде как сводится к минимуму;
2) Это копия другого сайта, где ЧПУ нормально работает.
.htaccess уже пробовал пересоздать, разумеется. Сейчас он выглядит так:
HTML:
# ~~start~~ Do not remove this comment, Prestashop will keep automatically the code outside this comment when .htaccess will be generated again
# .htaccess automaticaly generated by PrestaShop e-commerce open-source solution
# http://www.prestashop.com - http://www.prestashop.com/forums

<IfModule mod_rewrite.c>
<IfModule mod_env.c>
SetEnv HTTP_MOD_REWRITE On
</IfModule>

RewriteEngine on


#Domain: electro
RewriteRule . - [E=REWRITEBASE:/]
RewriteRule ^api$ api/ [L]

RewriteRule ^api/(.*)$ %{ENV:REWRITEBASE}webservice/dispatcher.php?url=$1 [QSA,L]

# Images
RewriteRule ^([0-9])(\-[_a-zA-Z0-9-]*)?(-[0-9]+)?/.+\.jpg$ %{ENV:REWRITEBASE}img/p/$1/$1$2$3.jpg [L]
RewriteRule ^([0-9])([0-9])(\-[_a-zA-Z0-9-]*)?(-[0-9]+)?/.+\.jpg$ %{ENV:REWRITEBASE}img/p/$1/$2/$1$2$3$4.jpg [L]
RewriteRule ^([0-9])([0-9])([0-9])(\-[_a-zA-Z0-9-]*)?(-[0-9]+)?/.+\.jpg$ %{ENV:REWRITEBASE}img/p/$1/$2/$3/$1$2$3$4$5.jpg [L]
RewriteRule ^([0-9])([0-9])([0-9])([0-9])(\-[_a-zA-Z0-9-]*)?(-[0-9]+)?/.+\.jpg$ %{ENV:REWRITEBASE}img/p/$1/$2/$3/$4/$1$2$3$4$5$6.jpg [L]
RewriteRule ^([0-9])([0-9])([0-9])([0-9])([0-9])(\-[_a-zA-Z0-9-]*)?(-[0-9]+)?/.+\.jpg$ %{ENV:REWRITEBASE}img/p/$1/$2/$3/$4/$5/$1$2$3$4$5$6$7.jpg [L]
RewriteRule ^([0-9])([0-9])([0-9])([0-9])([0-9])([0-9])(\-[_a-zA-Z0-9-]*)?(-[0-9]+)?/.+\.jpg$ %{ENV:REWRITEBASE}img/p/$1/$2/$3/$4/$5/$6/$1$2$3$4$5$6$7$8.jpg [L]
RewriteRule ^([0-9])([0-9])([0-9])([0-9])([0-9])([0-9])([0-9])(\-[_a-zA-Z0-9-]*)?(-[0-9]+)?/.+\.jpg$ %{ENV:REWRITEBASE}img/p/$1/$2/$3/$4/$5/$6/$7/$1$2$3$4$5$6$7$8$9.jpg [L]
RewriteRule ^([0-9])([0-9])([0-9])([0-9])([0-9])([0-9])([0-9])([0-9])(\-[_a-zA-Z0-9-]*)?(-[0-9]+)?/.+\.jpg$ %{ENV:REWRITEBASE}img/p/$1/$2/$3/$4/$5/$6/$7/$8/$1$2$3$4$5$6$7$8$9$10.jpg [L]
RewriteRule ^c/([0-9]+)(\-[\.*_a-zA-Z0-9-]*)(-[0-9]+)?/.+\.jpg$ %{ENV:REWRITEBASE}img/c/$1$2$3.jpg [L]
RewriteRule ^c/([a-zA-Z_-]+)(-[0-9]+)?/.+\.jpg$ %{ENV:REWRITEBASE}img/c/$1$2.jpg [L]
# AlphaImageLoader for IE and fancybox
RewriteRule ^images_ie/?([^/]+)\.(jpe?g|png|gif)$ js/jquery/plugins/fancybox/images/$1.$2 [L]

# Dispatcher
RewriteCond %{REQUEST_FILENAME} -s [OR]
RewriteCond %{REQUEST_FILENAME} -l [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^.*$ - [NC,L]
RewriteRule ^.*$ %{ENV:REWRITEBASE}index.php [NC,L]
</IfModule>

AddType application/vnd.ms-fontobject .eot
AddType font/ttf .ttf
AddType font/otf .otf
AddType application/font-woff .woff
AddType font/woff2 .woff2
<IfModule mod_headers.c>
   <FilesMatch "\.(ttf|ttc|otf|eot|woff|woff2|svg)$">
     Header set Access-Control-Allow-Origin "*"
   </FilesMatch>
</IfModule>

#If rewrite mod isn't enabled
ErrorDocument 404 /index.php?controller=404

# ~~end~~ Do not remove this comment, Prestashop will keep automatically the code outside this comment when .htaccess will be generated again
Так выглядят правила путей:
yYUIx9a.png
Ещё пробовал убрать из пути к товару {-:id_product_attribute}, но система сказала, что я много на себя беру. А ещё пробовал восстановить дефолтный путь к странице, но это не помогло, разумеется.
Буду благодарен за любую помощь. Это Presta 1.7.2.4.


локалка - зло, ибо там ещё больше корявых и нестандартных конфигов, особенно если юзаете винду

разворачивайте копию сайта на хостинге
 
Я бы сделал так:
1. Ставим чистую новую престу, лучше даже с демо-данными. Включаем ЧПУ, проверяем их работоспособность. Если да, то см. п.3, если нет - то п.2.
2. Если не работат - проверяем конфиги, правим, читаем доки. Да, как сказал @_sashok, виндовый хостинг - биг какашка, лучше поднимите линукс в виртуалке.
3. Если работат, то очищаем данные, есть специальный модуль prestashop cleaner, так кажется называется
4. Экспортим БД из исходного сайта в текстовый sql, только "коммерческие"таблицы, т.е. те, что относятся к товарам/арибутам/комбинациям, зказам и т.п., для сокращения затрат времени/сил копируем только непустые таблицы
5. Копируем /img исходного сайта в свой новый
6. Импортим полученный в п.4 sql-файл.
7. PROFIT!

UPD: При известнйо сноровке всё это занимает не более 30-40 минут, причем основное время уходит на копирование картинок ;)
У меня была такая же затыка, я так и не нашел причину, а вышеуказанный алгоритм мне помог.
 
локалка - зло, ибо там ещё больше корявых и нестандартных конфигов, особенно если юзаете винду

разворачивайте копию сайта на хостинге
Попробую, благо, есть тестовый поддомен под эти цели, который как раз освободился.
UPD: При известнйо сноровке всё это занимает не более 30-40 минут, причем основное время уходит на копирование картинок ;)
У меня была такая же затыка, я так и не нашел причину, а вышеуказанный алгоритм мне помог.
Не хотелось бы, т.к. очень много изменений хардкодил, даже те, которые решаются при помощи CSS, как раз ввиду отсутствия сноровки. Причём даже без оверрайда это делал. Так что проще ЧПУ вообще не включать в таком случае, наверное.
 
Не хотелось бы, т.к. очень много изменений хардкодил, даже те, которые решаются при помощи CSS, как раз ввиду отсутствия сноровки. Причём даже без оверрайда это делал. Так что проще ЧПУ вообще не включать в таком случае, наверное.

Возможно, вам стоило бы как-то задокументировать ваши изменения? А то они ж забываются буквально за несколько дней, если ими постоянно не заниматься.

У меня есть ощущение, что проблема скорее всего в каком-то модуле. Может, попробуете их последовательно поотключать и посмотреть результат?
Я снова наткнулся на такую же фигню в модуле stblog темы transformer. Что самое интересное, rewrite-ы категорий этого модуля работают нормально, в постами же ж..а. Тоже придется хардкодить видимо :) Но тут я хоть примерно представляю куда копать.
 
Возможно, вам стоило бы как-то задокументировать ваши изменения? А то они ж забываются буквально за несколько дней, если ими постоянно не заниматься.

У меня есть ощущение, что проблема скорее всего в каком-то модуле. Может, попробуете их последовательно поотключать и посмотреть результат?
В будущем обязательно буду, тогда был, что называется, мал и глуп. Это вообще не моя специальность, но так вышло, что больше некому заняться.
Модули попробую поклацать. Кстати, в процессе написания как раз мысль возникла, какой именно модуль мог бы так подействовать...
 
В будущем обязательно буду, тогда был, что называется, мал и глуп. Это вообще не моя специальность, но так вышло, что больше некому заняться.
Модули попробую поклацать. Кстати, в процессе написания как раз мысль возникла, какой именно модуль мог бы так подействовать...

Я свою беду опять победил :) Вылечилось заменой php версии 7.2 на 7.1. У вас кака версия РНР? Может, проблема в этом же?
 
Я свою беду опять победил :) Вылечилось заменой php версии 7.2 на 7.1. У вас кака версия РНР? Может, проблема в этом же?
Кстати, на локалке какая-то из последних, может, тоже 7.2, а на хостинге 5.6.35 (и меняется только какими-то хитрыми ручными махинациями со стороны хостера после личного обращения в поддержку, единственное, что мне не нравится у них). Надо проверять, конечно, работоспособность там. Спасибо за идею!
 
Спасибо отписавшимся в теме! Дело было, действительно, в версиях PHP. Когда сайт вернулся на ту, на которой был сайт-оригинал, ЧПУ заработали.
 
симптомы точно такие же, как при попытке запустить престу на стандартном конфиге nginx :)
 
Последнее редактирование:
Назад
Сверху