【问题标题】:Prestashop webservice error 404Prestashop 网络服务错误 404
【发布时间】:2016-10-17 10:18:55
【问题描述】:

我正在尝试从脚本运行 web 服务到 prestashop(客户列表中给出的示例)。我收到以下错误:

HTTP REQUEST HEADER
GET //api/customers&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/customers&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 配置问题。 我还启用了友好的网址,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

【问题讨论】:

  • 您是否尝试过在后台启用 CGI?
  • 是的..经过一些研究,我发现如果我在子域(例如 sub.example.com)中安装 presta,它可以工作。如果它安装在主域(example.com)中,则不会。我在两者中都应用了相同的配置..
  • 我不知道是否是相对的,但我只是看到激活友好网址时图像也没有显示。这是 htaccess 问题吗?
  • 但是我读到“Bad ID”,这不是一个完整的404,你确定相同的配置和权限吗?恕我直言,您必须检查服务器配置或 SEO 和 URL PrestaShop 配置
  • 我应该在文件中使用什么权限?

标签: web-services .htaccess prestashop


【解决方案1】:

转到 BackOffice -> 商店参数 -> 流量和 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 {} \;

    【讨论】:

    • 感谢您的建议,可以吗?
    猜你喜欢
    • 1970-01-01
    • 2015-11-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-02-28
    相关资源
    最近更新 更多