0

많은 블로그 고객이있는 고객이 있습니다. 각 WordPress 블로그는 제품 링크를 제공하는 플러그인을 호출합니다. 링크는 다음과 같습니다를 구성하는 방식 :wp- 콘텐츠에서 WordPress 플러그인 파일을 호출 할 수 없습니다.

{웹 사이트}/WP - 콘텐츠/플러그인/prodx/제품 ID = 432,320

이 두 가지를 제외한 모든 블로그에 잘 작동합니다. 그 두 가지에서 URL을 호출하려고하면 404가 표시됩니다.

그래서 prodx를 제외한 모든 플러그인을 사용 중지하고 테마를 기본 (쿠브 릭)으로 되 돌렸습니다. 아마도 add_action() API를 사용한 플러그인 차단이 URL을 가로 채고 리디렉션하는 등의 작업을합니다. 그러나 이것은 도움이되지 못했습니다.

그래서 WordPress를 최신 버전으로 업그레이드했습니다. 다시 수정하지 않았습니다.

따라서 권한을 확인하고 잘 작동하는 블로그와 비교했습니다. 다시 수정하지 않았습니다.

그래서 저는 .htaccess를 작업중인 블로그의 것을 사용하여 교체했습니다. 다시 수정하지 않았습니다.

그래서이 블로그와 동일한 작업 블로그에서 모든 파일을 대체 한 다음 wp-config.php 파일을 복원하여 올바른 블로그 데이터베이스와 대화했습니다. 다시 수정하지 않았습니다.

다시 한번 완벽하게 작동하는 블로그와 비교하여 꼼꼼하게 사용 권한을 확인했습니다. 다시 수정하지 않았습니다.

그래서, 내가 지금처럼 보이는 test.php 생성 :

<?php 

print_r($_GET); 
echo "hello world"; 

난 다음 다른 플러그인 폴더에 복사하고 그것을 얻기 위해 브라우저를 사용 - 다시를, (404) 그래서 나는 그것을 복사 wp-content/plugins의 루트에 넣고 다시 404로 호출하려고 했으므로 wp-content에 복사했습니다. 다시 404. 마지막으로, 이것을 WordPress 블로그 웹 사이트의 루트에 복사했습니다. 그리고 이번에는 효과가있었습니다!

의미가 없습니다.

나는이 고객을 위해 /etc/httpd/conf/httpd.conf와 함께 뭔가 일이 벌어지고 있다고 생각하기 시작했다.하지만 나는이 고객을 위해 다른 점을 보았다. IP 주소는 고객의 IP 주소와 달랐다. 블로그가 작동했습니다. 각 고객은 내 클라이언트가 구축 한이 환경에서 고유 한 IP를 얻습니다.

내 고객 sysop도 당혹 스럽습니다.

당신은 어떻게 생각하십니까? 이 고객을 위해 WP 데이터베이스에 문제가 있습니까? httpd.conf에 문제가 있습니까?

답변

0

URL이 너무 길다는 것이 문제 였다고 생각합니다.

http://www.boutell.com/newfaq/misc/urllength.html

을 그리고 어떤 이유로 블로그 대신 413의 404를 얻고 있었다 : 여기에 대한 몇 가지 좋은 정보입니다.

gzcompress를 사용하여 긴 제품 ID (클로킹 된 URL)를 줄인 다음 bin2hex를 줄이는 것이 수정되었습니다. 그래서 난과 같이 URL을했다 :

http://myblog.com/item/789ccb282929b0d2d72f2f2fd7cb4ac92fcc4faed44bcecfd54fcec94cced63536373334b730d7353430333334b530b60f0df2b1cd00ea503576543572032290befcb2d4a2e292fce46c904e90b0b15b1a50854b9aaa915980a3bb2b901910e4ef12ea1c0214f00f0ef60e058a181a199b5b18999b0100194725b4

을 거기에서, 나는 내 플러그인, URL을 납치을 검사하고 리디렉션하는 초기화 처리기를 추가했다. 그 기능은 다음과 같습니다 :

add_action('init','hijackURL'); 

function hijack_URL() { 
    $sURL = $_SERVER['REDIRECT_URL']; 
    if (empty($sURL)) { 
    $sURL = $_SERVER['REQUEST_URI']; 
    } 
    if (strpos(' ' . $sURL, '/item/')>0) { 
    $sID = str_replace('/item/','',$sURL); 
    $sID = trim($sID); 
    if (empty($sID)) { 
     require('../../../wp-blog-header.php'); 
     $sBlogURL = get_bloginfo('wpurl'); 
     header('HTTP/1.1 302 Moved Temporarily'); 
     header("Location: $sBlogURL");  
     exit(0); 
    } 
    $sID = pack('H*', $sID); 
    $sURL = gzuncompress($sID); 
    header('HTTP/1.1 302 Moved Temporarily'); 
    header("Location: $sURL"); 
    exit(0); 
    } 
} 
1

호스트에서 이미 사용 가능할 수도있는 phpmyadmin을 사용하여 WP 옵션 테이블의 플러그인 옵션에서 불량 URL을 확인하거나 플러그인으로 사용할 수 있습니다 (WordPress › Portable phpMyAdmin « WordPress Plugins). 또는 클린 옵션으로 플러그인의 옵션을 삭제하여 플러그인을 완전히 "재설정"하십시오 (플러그인에서 옵션을 사용하는 경우). Clean Options « WordPress Plugins

+0

감사합니다. 알고있다. 나는 필터 또는 액션을 rewriterules (WordPress에서 가능함)에 추가 한 것으로 생각하고 있으며, 이것이 나에게이 일을하고있다. – Volomike

1

당신은 서버의 오류 로그를 살펴 봐야합니다. 플러그인이 플러그인 디렉토리에있는 파일에 연결해서는 안되며, 워드 프레스 클래스를 사용해야합니다. http://codex.wordpress.org/Function_Reference/WP_Rewrite

+0

wp_rewrite API가 실제로 상당히 복잡하다는 것을 알았습니다. 그리고 그들은 활성화 및 비활성화 중에 실행하는 것이 좋지만, 불행하게도 이미 실행중인 블로그에는 그렇게 할 수 없습니다. 그래서, 나는 hijack_URL() 기법을 사용했다. – Volomike

관련 문제