Có một cách tiếp cận khác nếu bạn muốn giữ tính tương thích với các cuộc gọi API cũ. Đối với một số lý do không rõ ràng, máy chủ Apache của tôi không phân tích chuỗi ^api/...
trong quá trình phân tích cú pháp viết lại.
Nhưng bạn vẫn có thể sử dụng http://www.somedomain.com/api/v2_soap?wsdl=1
mà không thay đổi mã PHP Magento. Bạn chỉ cần thay đổi .htaccess như sau:
Thay thế trong .htaccess:
RewriteRule ^api/([a-z][0-9a-z_]+)/?$ api.php?type=$1 [QSA,L]
bởi
RewriteRule ^api(\.php)?/([a-z][0-9a-z_]+)/?$ api.php?type=$2 [QSA,L]
(xem^api.php/thay vì^api /)
Và thậm chí tốt hơn nếu một số bạn, có http://www.somedomain.com/api/V2_soap?wsdl=1
(V2_soap là chữ hoa), bạn sẽ phải thêm RewriteMap
để sử dụng hàm apache nội bộ để đặt chữ thường thành thông số. Thêm vào máy chủ ảo của bạn RewriteMap:
RewriteMap lc int:tolower
Và trong .htaccess
RewriteRule ^api(\.php)?/([a-zA-Z][0-9a-z_]+)/?$ api.php?type=${lc:$2} [QSA,L]
này sẽ thiết lập thành chữ thường các tham số cho kịch bản api.php và cũng chấp nhận 'V2_soap' trong cụm từ thông dụng
Phần cuối cùng này đã được mang bởi @dreeves in this answer
Nguồn
2013-04-09 08:46:30
/index.php/api/V2_soap?wsdl=1 bạn đã thử – chanz
này ok để làm việc này chỉ khi index.php được bao gồm trong url. Tại sao điều này? –
index.php là không cần thiết, bạn có thể thử cách này quá www.yourmagento.com/api/V2_soap?wsdl=1 – chanz