1

Woocommerce を利用したサイトの問題をデバッグするのに苦労しています。チェックアウト時に、すべての注文フィールドに入力し、[注文する] ボタンをクリックすると、次の AJAX 要求があります。

https://www.shop.com/wp-admin/admin-ajax.php

成功の JSON で応答します。

{"result":"success","redirect":"https:\/\/www.shop.com\/checkout\/pay\/?key=order_50b9f4b86e75f&order=4491"}

そして、ブラウザは実際にhttps://www.shop.com/checkout/pay/?key=order_50b9f4b86e75f&order=4491にアクセスしますが、問題は、このリクエストでリダイレクトされて (ヘッダーを介した 302 リダイレクト)、/ なしで /checkout に戻ることです。 pay で、すべてのフィールドが空です。しかし、私の場合はpaypalであるwoocommerceのデフォルトの支払いゲートウェイにリダイレクトしていました。注文は実際に行われ、管理画面に表示されますが、ユーザーが支払いのためにペイパルに誘導されることはありません。

これは、Apacheからnginxサーバーに切り替えたときに表示されました。

このサイトのnginx構成は次のとおりです。

server {
       listen 80;
       server_name shop.com www.shop.com;
       root /var/www/shop;
       index index.php;
error_log    /var/log/nginx/shop_error.log notice;
rewrite_log     on;

       location / {
                try_files $uri $uri/ /index.php;
       }
       location ~* \.(?:ico|css|js|gif|jp?g|png) {
           expires 100d;
       }

       location ~ \.php$ {
          include        fastcgi_params;
          fastcgi_pass   localhost:9000;
       }

#       include /var/www/shop/nginx.conf;

       location = /wp-config.php {
          deny all;
       }

}

server {
       listen 443;
       server_name shop.com www.shop.com;
error_log    /var/log/nginx/shop_error.log notice;
rewrite_log     on;
       root /var/www/shop;
       index index.php;

       ssl on;
       ssl_certificate /etc/nginx/sslchain.crt;
       ssl_certificate_key /etc/nginx/server.key;
       ssl_client_certificate /etc/nginx/cert.ca-bundle;

       ssl_session_timeout 5m;

       ssl_protocols SSLv3 TLSv1;
       ssl_ciphers ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv3:+EXP;
       ssl_prefer_server_ciphers on;
location / {
       try_files $uri $uri/ /index.php;
}
       #include /var/www/shop/nginx.conf;

       location ~* \.(?:ico|css|js|gif|jp?g|png) {
           expires 100d;
       }
       location ~ \.php$ {
          include        fastcgi_params;
          fastcgi_pass   localhost:9000;
       }

       location = /wp-config.php {
          deny all;
       }

}

nginx の書き換えログを調べたところ、/checkout/pay リクエストが WP index.php に正しくリダイレ​​クトされました。少なくともこれは正しいと思います。

今、私は誰にも正確な問題を指摘するように頼んでいません。ありがたいのですが、woocommerceの書き換えルールと、/checkout/payを処理するスクリプトがどこにあるかを理解しようとしています./checkoutにリダイレクトするに自分でデバッグして、リダイレクトする理由を理解します. .

「支払い」ページには [woocommerce_pay] で Woocommerce ショートコードのみがあり、その URL は正しいようです: 「/checkout/pay/」

shortcodes/shortcode-pay.php の関数にデバッグ ダンプを配置しようとしましたが、何も起こらないため、その前にリダイレクトされますか?

現在、キャッシュプラグインはすべてオフになっています。現時点でアクティブなすべてのプラグインのリストは次のとおりです。

akismet
debug-bar
gravityforms
secure-wordpress
tinymce-advanced
vslider
woocommerce
woocommerce-compare-products
woocommerce-custom-product-tabs-lite
woocommerce-debug-bar
woocommerce-delivery-notes
woocommerce-fedex
woocommerce-gateway-paypal-advanced
woocommerce-gravityforms-product-addons
woocommerce-product-bundles
woocommerce-usps
woocommerce-USPS
woodojo
woodojo-downloads
woosidebars
wordpress-importer
wordpress-seo
wp-dbmanager
4

1 に答える 1

1

私は自分でエラーを見つけました、それはnginxリライトルールの間違った設定でした。具体的には、

location / {
   try_files $uri $uri/ /index.php
}

ただし、「要約基本設定」セクションのようになっているはずです。

于 2012-12-02T23:37:03.337 に答える