我需要做些什么才能让 magento 中的 api 正常工作吗?
我在本地安装 (1.7) 上访问 /api/soap/?wsdl 并返回以下错误:
Invalid webservice adapter specified.
网站中的所有内容看起来都已启用,但我找不到任何有关使 api 正常工作所需执行的其他步骤的信息。
我已经通过关闭这样的 MultiViews 选项从 htaccess 解决了这个问题:
从
<Directory /var/www/magento>
Options Indexes FollowSymLinks MultiViews
</Directory>
到
<Directory /var/www/magento>
Options +Indexes +FollowSymLinks -MultiViews
</Directory>
如果您想保持与旧 API 调用的兼容性,可以使用不同的方法。^api/...
由于某种不明原因,我的 Apache 服务器在重写解析期间没有分析字符串。
但是您仍然可以在http://www.somedomain.com/api/v2_soap?wsdl=1
不更改 Magento PHP 代码的情况下使用。您只需要更改 .htaccess,如下所示:
在 .htaccess 中替换:
RewriteRule ^api/([a-z][0-9a-z_]+)/?$ api.php?type=$1 [QSA,L]
经过
RewriteRule ^api(\.php)?/([a-z][0-9a-z_]+)/?$ api.php?type=$2 [QSA,L]
(请参阅 ^api.php/ 而不是 ^api/)
如果你们中的一些人有http://www.somedomain.com/api/V2_soap?wsdl=1
(V2_soap 是大写的),甚至更好,你将不得不添加一个RewriteMap
使用内部 apache 函数来设置小写的参数。将 RewriteMap 添加到您的虚拟主机:
RewriteMap lc int:tolower
在 .htaccess 中
RewriteRule ^api(\.php)?/([a-zA-Z][0-9a-z_]+)/?$ api.php?type=${lc:$2} [QSA,L]
这将设置为小写 api.php 脚本的参数,并在正则表达式中接受“V2_soap”
最后一部分由@dreeves 在这个答案中提出
我通过编辑我的虚拟主机文件来解决这个问题,(/etc/apache2/sites-available/mag.dev.conf)
如下所示:
<Directory /var/www/mag/mag>
Options +Indexes +FollowSymLinks -MultiViews
.....
</Directory>
现在它正在加载 xml 响应。
平台是 ubuntu 12.04