programing

워드 프레스 페이지에서 "http"를 "https"로 모두 변경

subpage 2023. 9. 26. 22:22
반응형

워드 프레스 페이지에서 "http"를 "https"로 모두 변경

워드프레스로 작동하는 사이트의 일부 페이지에 SSL을 구현하는 중입니다.현재 보안된 페이지에서 혼합 내용 경고가 표시되고 있습니다. 사용자 지정 테마에는 모든 페이지에서 발생하는 많은 링크와 src 속성이 포함되어 있습니다.링크는 머리글, 바닥글, 네비게이션(워드 프레스 기능에 의해 자동 생성됨) 및 사이드바(부분적으로 플러그인에서 생성됨)에 나타납니다.저는 이론적으로 보안된 페이지에 대한 사용자 정의 머리글과 바닥글을 작성할 수 있지만, 보안된 페이지에서 플러그인과 네비게이션을 사용하는 것은 불가능합니다.

제가 하루 종일 시도한 것은 SSL을 통해 제공되는 페이지에서 "http"의 모든 발생을 "https"로 변경하는 자바스크립트 또는 jQuery 함수를 작성하는 것입니다.

이 문제는 제 코딩 능력의 한계를 노골적으로 보여주었습니다.문제는 최종적으로 제공되는 문서가 여러 개의 php 파일로 구성되어 있다는 것입니다. 그 중 일부는 제가 거의 통제할 수 없습니다((A는 다소 복잡하고 (B는 추후 업데이트하고 싶은) 플러그인을 수정해야 합니다).또한 규칙적인 표현은 여전히 나에게 수수께끼입니다.

이것이 가능한지, $(문서)로 변경을 유발하는지 모르겠습니다.ready or window.onload는 브라우저가 그 이전에 혼합 콘텐츠 경고를 발행할 것이기 때문에 어쨌든 너무 늦지는 않을 것입니다.

미리 고마워, 요하네스

프로토콜에 구애받지 않는 상대 URL 접두사를 살펴보셨습니까?

예를 들어 다음 사항이 있는 경우

<img src="//myimage.png" />

페이지가 현재 사용 중인 프로토콜은 무엇이든 사용합니다.자세한 정보 : http://paulirish.com/2010/the-protocol-relative-url/

저는 독자 분이 추구하는 것을 더 잘 할 수 있는 방법이 있다고 제안하는 다른 포스터들에 동의합니다.그건 그렇고, 곤란한 상황인 것 같으니 한 번 해보겠습니다. (BTW, 해트팁과 프로토콜 상대 URL에 +1 투표; 그건 몰랐네요!)

어쨌든, 당신이 쫓고 있는 것은<a>태그, 그러나 다른 태그에 이를 추론하는 것은 용이해야 합니다.

if (document.location.protocol === 'https:') {
    $('a').each(function() {
        var href = $(this).attr('href');
        if (href.indexOf('http:') > -1) {
            href = href.replace('http:', 'https:');
            $(this).attr('href', href);
        }
    });
}

이 도움을 통해 여러분이 하려는 일을 더 안전하게/더 실용적으로 할 수 있는 방법이 있는지 알아보시기 바랍니다.이 접근 방식은 링크에만 적용될 가능성이 높다는 점도 언급하겠습니다. 페이지 로드 후 CSS 및 스크립트 참조를 수정하면 확실히 역효과가 발생하여 원하는 결과를 얻을 수 없습니다.

"document.location.protocol === 'https:'"에서 ":"를 확인합니다.

HTTPS 요청 시 혼합 콘텐츠가 없는지만 확인하려면 현재 테마의 "function.php" 파일에 간단한 코드 조각을 추가해 보십시오.

function _bd_force_https()
{
    if ( empty( $_SERVER['HTTPS'] ) ) return;
    ob_start();
}
add_action( 'template_redirect', '_bd_force_https', 1 );

function _bd_output_https_page()
{
    if ( empty( $_SERVER['HTTPS'] ) ) return;
    echo str_ireplace( 'http://', 'https://', ob_get_clean() );
}
add_action( 'wp_footer', '_bd_output_https_page', 99 );

PROS:

  • 아주 군살이 없고, 간단하게 추가할 수 있는
  • javascript/jquery를 사용하지 않습니다.

반대:

  • 플러그인이 아니기 때문에 테마를 변경하면 끊어집니다.
  • javascripts가 클라이언트 측에서 요청한 HTTP 요청을 가로챌 수 없습니다.

WordPress HTTPS 같은 플러그인을 사용해야 한다고 생각합니다.제어할 수 없는 타사 플러그인과 같이 주의해야 할 엣지 케이스가 너무 많으며, 이와 같이 잘 구축된 애드온을 사용하는 것이 흥미로운 접근 방식이 될 것입니다.

WordPress HTTPS는 WordPress 사이트에서 SSL을 사용하기 위한 올인원 솔루션입니다.무료 지원!

이러한 위험한 보안 구멍을 해결하기 위해 자바스크립트를 사용하는 대신 쿠키 등을 설정하여 서버 측에서 이 작업을 수행해야 한다고 생각합니다.

오늘 이와 같은 정확한 문제가 있었으므로 워드프레스-https가 전혀 작동하지 않았습니다. 설정을 저장하려고 하면 브라우저에서 전체 사이트가 중단되었습니다.훨씬 더 간단한 플러그인을 찾아냈습니다. http://wordpress.org/extend/plugins/ssl-insecure-content-fixer/

참고로 저처럼 nginx와 같은 역방향 프록시를 실행하는 경우 여기에 있는 조언을 따라야 합니다. http://blog.netflowdevelopments.com/2013/04/10/fixing-this-page-includes-script-from-unauthenticated-sources-problem-with-ssl-wordpress-install-on-apachenginx-server/

기본적으로 다음과 같이 말합니다.

if (stripos(get_option ('siteurl'), 'https://' === 0) { $_SERVER['HTTPS'] = 'on'; }

wp-config.php 파일 끝에

다른 모든 마이그레이션 단계를 수행한 후에도 내용이 혼합되어 있으면 다음과 같은 작업을 수행할 수 있습니다.

sudo apt-get install php5-cli
curl -O https://raw.githubusercontent.com/wp-cli/builds/gh-pages/phar/wp-cli.phar
pushd /var/www/path/
php /path/to/wp-cli.phar search-replace 'http://example.com' 'https://example.com' --skip-columns=guid --dry-run

괜찮다면,

php /path/to/wp-cli.phar search-replace 'http://example.com' 'https://example.com' --skip-columns=guid

출처: https://helgeklein.com/blog/2015/01/switching-wordpress-site-http-https/

데이터베이스 레벨인 IMHO에서 레거시 URL을 변경하는 것이 좋습니다.ohttp://에 구애받지 않는 발생//다음 SQL 합니다.

UPDATE wp_posts 
SET    post_content = ( Replace (post_content, 'src="http://', 'src="//') )
WHERE  Instr(post_content, 'jpeg') > 0 
        OR Instr(post_content, 'jpg') > 0 
        OR Instr(post_content, 'gif') > 0 
        OR Instr(post_content, 'png') > 0;

인용구가 하나인 경우:

UPDATE wp_posts 
SET   post_content = ( Replace (post_content, "src='http://", "src='//") )
WHERE  Instr(post_content, 'jpeg') > 0 
        OR Instr(post_content, 'jpg') > 0 
        OR Instr(post_content, 'gif') > 0 
        OR Instr(post_content, 'png') > 0;

자세한 내용은 여기에서 확인하십시오.

언급URL : https://stackoverflow.com/questions/6053661/change-all-occurrences-of-http-to-https-on-a-wordpress-page

반응형