2012-12-01 2 views
1

Woocommerce 기반 사이트와 관련된 문제를 디버깅하는 데 어려움을 겪고 있습니다. 내가 체크 아웃 할 때, 모든 주문을 기입 장소 주문하기 버튼을 클릭 한 후 성공 JSON으로 응답WooCommerce는 체크 아웃시 규칙을 다시 작성합니다.

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

에 AJAX 요청이 : 다음

{"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으로 가고 있지만 문제는이 요청에서/payay없이/checkout으로 리디렉션 (헤더를 통해 302 리디렉션)되고 모든 필드가 비어 있다는 것입니다. 하지만 그것은 내 경우에는 페이팔 (paypal) 인 woocommerce의 기본 결제 게이트웨이로 리디렉션하는 데 사용되었습니다. 주문은 실제로 admin에 표시되고 표시되지만 사용자는 지불을 위해 페이팔로 직접 연결되지 않습니다.

아파치에서 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를 재 작성 로그를 보면서 제대로 적어도 나는 이것이 올바른 생각, 포스트되는 index.php/체크 아웃/지불 요청을 리디렉션 :

다음은이 사이트에 대한 내의 nginx의 설정입니다.

이제는 아무에게도 정확한 문제를 지적하지 않겠습니다. 비록 내가 감사 하겠지만, 나는 woocommerce 재 작성 규칙을 알아 내려고 노력하고 있으며,/checkout/pay를 처리하는 스크립트는 어디에 있으며, 직접 디버깅을 시도 할 것이다. 전에로 리다이렉트하는 이유를 이해해야한다. 리디렉션합니다.

"페이"페이지가 [woocommerce_pay] 만 Woocommerce 단축 코드를 가지고 있으며, 그 URL은 잘 될 같다 :

내가 단축 코드에서 함수에 디버그 덤프를 배치하려고 "//체크 아웃/지불"/ 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 

답변

1

나는 에러 나 자신을 발견은, 그것의 nginx 재 작성 규칙의 잘못 설정했다. 특히, 나는

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

있어하지만 그것은 nginx를 문서의 올바른 버전 이후에 다른 인수를하지 않는 것도 중요하다 "요약 텍스트 기본 설정"섹션

+0

here 같았한다고 생각합니다. 예를 들어, try_files $ uri $ uri//index.php?$args /index.php?q=$request_uri는 또한 사용자가 설명하는 실패를 유발합니다. 증상으로는 결제 페이지의 HTML 인 AJAX 응답, 총계 및 결제 패널에 반투명 오버레이가 남았으며, 위치 0의 JSON에서 예기치 않은 토큰 <이 포함됩니다 – jyoung

관련 문제