#web-services #.htaccess #prestashop
#веб-службы #.htaccess #prestashop
Вопрос:
Я пытаюсь запустить веб-сервис из скрипта в prestashop (пример приведен со списком клиентов). Я получаю следующую ошибку:
HTTP REQUEST HEADER
GET //api/customersamp;ws_key=57IGC8CC1HPC58U865KP7YNPWK1G4LSC HTTP/1.1
Authorization: Basic NTdJR0M4Q0MxSFBDNThVODY1S1A3WU5QV0sxRzRMU0M6
Host: edentalbook.com
Accept: */*
HTTP RESPONSE HEADER
HTTP/1.1 404 Not Found
Date: Mon, 17 Oct 2016 10:11:08 GMT
Server: Apache
Access-Control-Max-Age: 1000
Access-Control-Allow-Headers: X-Requested-With, Content-Type, Origin, Authorization, Accept, Client-Security-Token, Accept-Encoding
Access-Control-Allow-Credentials: true
Access-Control-Allow-Methods: POST, GET, OPTIONS, DELETE, PUT
Content-Length: 320
Content-Type: text/html; charset=iso-8859-1
RETURN HTTP BODY
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html><head>
<title>404 Not Found</title>
</head><body>
<h1>Not Found</h1>
<p>The requested URL /api/customersamp;amp;ws_key=57IGC8CC1HPC58U865KP7YNPWK1G4LSC was not found on this server.</p>
<hr>
<address>Apache Server at edentalbook.com Port 80</address>
</body></html>
Bad ID
Я протестировал сервер (я установил новый prestashop) и работает без проблем. Поэтому я предполагаю, что это проблема конфигурации prestashop.
Также я включил дружественные URL-адреса, htaccess
Есть идеи? Спасибо
Отредактировано: возможно, это проблема с перезаписью URL, потому что, если я перейду с сервера на http://edentalbook.com/webservice/dispatcher.php работает отлично Я прикрепляю файл htaccess
# ~~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
RewriteCond %{HTTP:Authorization} ^(.*)
RewriteRule . - [E=HTTP_AUTHORIZATION:%1]
#Domain: betashop.edentalbook.com
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/x-font-woff .woff
<IfModule mod_headers.c>
<FilesMatch ".(ttf|ttc|otf|eot|woff|svg)$">
Header add 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
Комментарии:
1. Вы пробовали включить CGI в бэк-офисе?
2. Да .. после некоторых исследований я выяснил, что если я установлю presta в поддомен (например sub.example.com ) это работает. Если он установлен в основном домене (example.com ) это не так. Я применил одну и ту же конфигурацию в обоих..
3. Я не знаю, является ли это относительным, но я только что увидел, что изображения также не отображаются при активации дружественного URL. Является ли это проблемой htaccess?
4. Однако я прочитал «Неверный идентификатор», это не полный 404, вы уверены в той же конфигурации и разрешениях? Имхо, вы должны проверить конфигурацию сервера или конфигурацию SEO и URL PrestaShop
5. какие разрешения я должен использовать в файлах?
Ответ №1:
Перейдите в бэк-офис -> Параметры магазина -> Трафик и SEO и нажмите кнопку Сохранить в блоке «Установить URL магазина». Это приведет к регенерации .htaccess
Ответ №2:
Это может быть проблема с разрешениями.
Проверьте, используете ли вы suPHP. Вы можете проверить, есть ли у вас проблемы с разрешениями, проверив журнал ошибок (он выдаст SoftException)
Если это так, то папок должно быть 755, а файлов 644
Итак, если у вас есть доступ по SSH, вы можете легко исправить с помощью команды find.
Сначала перейдите к пути, по которому выполняется установка PrestaShop. Затем:
для файлов:
find . -type f -perm 666 -exec chmod 644 {} ;
для папок:
find . -type d -perm 777 -exec chmod 755 {} ;
Комментарии:
1. Спасибо за ваше предложение, это нормально?