it-swarm.asia

Belirli sayfalarda ssl zorlamak için bir yolu var mı

Bazı sayfalarımda (form içerenler) güvenli bir bağlantıyı zorlamak istiyorum, ancak tüm sitenin ssl ile çalışmasını istemiyorum (yavaşlatıyor)

Özel sayfaları ssl gerektirecek şekilde yapılandırmanın bir yolu var mı?

6
Sruly

Admin-ssl eklentisini kullanın. Wp dışındaki şeyler için Apache'de rewriite kuralını kullanın.

3

Yönetici SSL eklentisi desteklenmediğinden yeni iş akışı.

  • eklentisini kullanın WP https

  • Ayarlarına bakın

  • wp-admin için SSL istiyorsanız, bunu wp-config.php'a ekleyin:

    define( 'FORCE_SSL_ADMIN', TRUE );
    
  • Giriş sayfası için de SSL istiyorsanız, bunu wp-config.php dosyasına ekleyin.

    define( 'FORCE_SSL_LOGIN', TRUE );
    
  • Aşağıdaki satırı .htaccess 'a ekleyin; WP'nin varsayılanını kaldır

    <IfModule mod_rewrite.c>
       RewriteEngine On
       RewriteCond %{SERVER_PORT} !^443$
       RewriteRule (.*) https://%{HTTP_Host}%{REQUEST_URI} [R,L]
    </IfModule>
    
  • Ön uçta belirli bir sayfa/gönderiyi SSL olarak ayarlarsanız, aşağıdaki eklentiyi kullanın veya yazı/sayfanın düzenleyicisindeki seçeneği ayarlayın; sadece bu eklentiyi aktif hale getirdiyseniz WP https. ayrıca bakınız Gist 4081291 bir örnek eklenti için

    /**
     * Plugin Name: Force SSL for specific pages
     * Description: 
     * Author:      Frank Bültge
     * Author URI:  http://bueltge.de/
     * Version:     1.0.0
     */
    
    ! defined( 'ABSPATH' ) and exit;
    
    if ( ! function_exists( 'fb_force_ssl' ) ) {
    
        add_filter( 'force_ssl' , 'fb_force_ssl', 1, 3 );
        function fb_force_ssl( $force_ssl, $id = 0, $utrl = '' ) {
            // A list of posts/page that should be SSL
            $ssl_posts = array( 22, 312 );
    
            if ( in_array( $id, $ssl_posts ) )
                $force_ssl = TRUE;
    
            return $force_ssl;
        }
    
    } // end if func exists
    
  • Eklenti olmadan WordPress HTTPS

    add_action( 'template_redirect', 'fb_ssl_template_redirect', 1 );
    function fb_ssl_template_redirect() {
    
            if ( is_page( 123 ) && ! is_ssl() ) {
    
                if ( 0 === strpos($_SERVER['REQUEST_URI'], 'http') ) {
                    wp_redirect(preg_replace('|^http://|', 'https://', $_SERVER['REQUEST_URI']), 301 );
                    exit();
                } else {
                    wp_redirect('https://' . $_SERVER['HTTP_Host'] . $_SERVER['REQUEST_URI'], 301 );
                    exit();
                }
            } else if ( !is_page( 123 ) && is_ssl() && !is_admin() ) {
    
                if ( 0 === strpos($_SERVER['REQUEST_URI'], 'http') ) {
                    wp_redirect(preg_replace('|^https://|', 'http://', $_SERVER['REQUEST_URI']), 301 );
                    exit();
                } else {
                    wp_redirect('http://' . $_SERVER['HTTP_Host'] . $_SERVER['REQUEST_URI'], 301 );
                    exit();
                }
            }
    }
    

uRL yanlışsa veya daha küçük sürüm, ancak geri dönüşlerle değil

add_filter( 'pre_post_link', 'fb_set_ssl_url', 10, 3 );
function fb_set_ssl_url( $permalink, $post, $leavename ) {

    if ( 123 == $post->ID )
        return preg_replace( '|^http://|', 'https://', $permalink );

    return $permalink;
}
11
bueltge

WordPress sürüm 3.0 ve üzeri için admin-ssl eklentisi çalışmıyor. SSL'nin çalışabilmesi için iki adım atmanız gerekir:

  1. Wp-config.php dosyanızda SSL Üzerinden Yönetim seçeneğini etkinleştirin ( bkz. ).
  2. WPSSL plugin eklentisini siteye yükleyin. (WordPress 3.0+ için güncellendi)
  3. SSL üzerinden çalıştırmak istediğiniz sayfalarda "force_ssl" adlı bir meta etiket ekleyin ve değeri "true" olarak ayarlayın.

Hepiniz bundan sonra hazır olmalısınız.

4
Dillie-O

Çözümlerinizle ilgili birçok sorun yaşadım (ancak bu bana yardımcı oldu). Çözümlerimi aşağıdaki dava için buraya koyacağım:

  • WordPress multisite
  • Nginx proxy ile Apache'de çalışan vestacp sunucusu

.İlk olarak sadece bu WP uzantısını kullandım: WPMU'yu idare edebilen "SSL Güvensiz İçerik Düzelticisi" ve "karma içerik" hatası ("Wordpress Https" kullanımdan kaldırıldığından ve benim için çalışmadığından)

.Secondely, is_ssl () işlevi nginx proxy ile çalışmıyor, bu yüzden bunu kullandım:

function isSecure() {
  return
    (!empty($_SERVER['HTTPS']) && $_SERVER['HTTPS'] !== 'off')
    || $_SERVER['SERVER_PORT'] == 443;
}

Ayrıca, "is_page ()" çalışmadı, bu yüzden son kodum (belirli sayfaları yönlendirmek için "https)

add_action( 'template_redirect', 'fb_ssl_template_redirect', 1 );
function fb_ssl_template_redirect() {

    global $post;

    //login = 8886
    //Pages clients
    $array_posts_ssl = array(8886);
    $array_posts_ssl_parents = array(8886);

    if ( in_array($post->ID,$array_posts_ssl)  ) {

        if ( !isSecure() ) {
            wp_redirect('https://' . $_SERVER['HTTP_Host'] . $_SERVER['REQUEST_URI'], 301 );
            exit();
        }

    } else  {

        if ( isSecure() ){
            wp_redirect('http://' . $_SERVER['HTTP_Host'] . $_SERVER['REQUEST_URI'] , 301 );
            exit();
        }
    }

}
1
Stéphane Molano

Better WP Güvenlik Eklentisini deneyin. Sitenizi güvence altına almak için bir sürü yararlı ayarın yanı sıra, ssl'yi giriş sayfasına veya seçtiyseniz arka yüze ve seçim sırasında her bir içerik için ön sayfadaki seçili sayfalara zorlamanıza izin veren bazı ayarlara sahiptir. görsel editöre kutu eklendi. Kullanımı çok kolay.

Tabii ki, önce sunucunuzda SSL kurulumu yapmanız gerekir, yani kendinden imzalı bir sertifika yüklemeniz (önerilmez) veya bir üçüncü taraf yetkilisinden bir sertifika için ödeme yapmanız ve sunucunuza yüklemeniz gerekir.

1
Camajan

Aşağıda bunu yapmanın en iyi "WordPress" yolu olacaktır, ne yaptığını açıklamak için tam olarak yorum yaptım.

add_action('wp','_my_custom_ssl_redirect'); // the 'wp' hook is the first place the post id is set.
function _my_custom_ssl_redirect(){
    global $post,$wp; // get some global values.

    $page_ids = array(2,123,321,456); // array of page ids we want to force to ssl.

    if( is_page() && isset($post->ID) && in_array($post->ID,$page_ids) ){ // check we are on a page and its a page we want to redirect.

        wp_safe_redirect( // make sure we only redirect to "internal" urls.
            add_query_arg( // add any url query arguments back to the url.
                $_SERVER['QUERY_STRING'], // The current query args.
                '',
                trailingslashit( // add a trailing slash to the home url as sometimes it is not added.
                    home_url( $wp->request, "https" ), // get the home url HTTPS link.
                    301 // set the redirect to be 301 "permanent", you can use 302 "temporary" here instead.
                )
            )
        );
        exit; // exit ASAP, no point in loading anything more.
    }
}

Temizliği için yorumlanmamış versiyonu :) (aynı kesin kod)

add_action('wp','_my_custom_ssl_redirect');
function _my_custom_ssl_redirect(){
    global $post,$wp;

    $page_ids = array(2,123,321,456); // array of page ids we want to force to ssl.

    if( is_page() && isset($post->ID) && in_array($post->ID,$page_ids) ){ 
        wp_safe_redirect( add_query_arg( $_SERVER['QUERY_STRING'], '',trailingslashit(home_url( $wp->request, "https" ), 301 )) );
        exit;
    }
}
0
Stiofan O'Connor

Yukarıda belirtilen eklentilerin her ikisi de eski görünmektedir veya en azından bir süredir korunamamıştır. WordPress-https eklentisi en iyi seçenek gibi görünüyor ve sitenin tamamında veya sadece belirli sayfalarda SMS'i zorlayacak.

0
Drai