ื”ืคื ื™ื™ืช HTTP ืœ-HTTPS ื‘ืืžืฆืขื•ืช htaccess ื‘ื•ื•ืจื“ืคืจืก

ื›ื“ื™ ืœื›ืคื•ืช HTTPS ื‘ื•ื•ืจื“ืคืจืก ืขืœ ืฉืจืช Apache ืื• LiteSpeed, ื”ื•ืกื™ืคื• ื—ื•ืง ื”ืคื ื™ื” 301 ืœืงื•ื‘ืฅ .htaccess. ื›ืš ื›ืœ ื‘ืงืฉืช HTTP ืชื•ืคื ื” ืœืื•ืชื” ื›ืชื•ื‘ืช ื‘ื“ื™ื•ืง ื‘-HTTPS, ื•ื”ื’ื•ืœืฉื™ื (ื•ื’ื ืžื ื•ืขื™ ื”ื—ื™ืคื•ืฉ) ื™ืจืื• ืจืง ื’ืจืกื” ืื—ืช ืฉืœ ื›ืœ ืขืžื•ื“.

ื”ืชืงื™ื ื• ืงื•ื“ื ืืช ืชืขื•ื“ืช ื”-SSL ื•ื•ื“ืื• ืฉื’ืจืกืช ื”-HTTPS ื ื˜ืขื ืช ืœืœื ืฉื’ื™ืื•ืช. ืœืชื”ืœื™ืš ื”ืžืขื‘ืจ ื”ืžืœื, ื›ื•ืœืœ ื˜ื™ืคื•ืœ ื‘ืชื•ื›ืŸ ืžืขื•ืจื‘ (Mixed Content), ื”ืฆื™ืฆื• ื‘ืžื“ืจื™ืš ืœื”ืขื‘ืจืช ืืชืจ ื•ื•ืจื“ืคืจืก ืœ-HTTPS.

ื”ืงื•ื“ ืœื›ืคื™ื™ืช HTTPS ื‘ืงื•ื‘ืฅ .htaccess

ืคืชื—ื• ืืช ืงื•ื‘ืฅ ื”-.htaccess ืฉื‘ืชื™ืงื™ื™ื” ื”ืจืืฉื™ืช ืฉืœ ื•ื•ืจื“ืคืจืก (ื”ืชื™ืงื™ื™ื” ืฉื‘ื” ื ืžืฆื ื”ืงื•ื‘ืฅ wp-config.php) ื•ื”ื•ืกื™ืคื• ืืช ื”ืฉื•ืจื•ืช ื”ื‘ืื•ืช ื‘ืชื—ื™ืœืช ื”ืงื•ื‘ืฅ, ืžืขืœ ื”ื‘ืœื•ืง # BEGIN WordPress:

# Force HTTPS
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

# BEGIN WordPress
# (the rules WordPress generated stay here, unchanged)
# END WordPress

ื”ืฉืื™ืจื• ืืช ื”ืงื•ื“ ืžื—ื•ืฅ ืœืกื™ืžื•ื ื™ื ืฉืœ ื•ื•ืจื“ืคืจืก. ื•ื•ืจื“ืคืจืก ื›ื•ืชื‘ืช ืžื—ื“ืฉ ืืช ื›ืœ ืžื” ืฉื ืžืฆื ื‘ื™ื ื™ื”ื ื‘ื›ืœ ืคืขื ืฉืฉื•ืžืจื™ื ืืช ื”ืงื™ืฉื•ืจื™ื ื”ืงื‘ื•ืขื™ื.

ื›ื™ืฆื“ ื”ืงื•ื“ ืขื•ื‘ื“

ื›ืš ืขื•ื‘ื“ ื›ืœ ื—ืœืง:

  • RewriteCond %{HTTPS} off ืชื•ืคืก ื‘ืงืฉื•ืช ืฉืœื ื”ื’ื™ืขื• ื“ืจืš SSL/TLS. ืฉืจืช Apache ืžื’ื“ื™ืจ ืืช HTTPS ื›-on ืขื‘ื•ืจ ื—ื™ื‘ื•ืจื™ื ืžื•ืฆืคื ื™ื.
  • RewriteRule ^(.*)$ ืชื•ืคืก ื›ืœ ื ืชื™ื‘ ื•ืžืคื ื” ืื•ืชื• ืœ-https:// ื™ื—ื“ ืขื ื”ื“ื•ืžื™ื™ืŸ ื•ื”ื ืชื™ื‘ ืฉื”ืชื‘ืงืฉื•. ื”-Query String ืžื•ืขื‘ืจ ืื•ื˜ื•ืžื˜ื™ืช.
  • R=301 ื”ื•ืคืš ืืช ื”ื”ืคื ื™ื” ืœืงื‘ื•ืขื”, ื•ื›ืš ืžื ื•ืขื™ ื”ื—ื™ืคื•ืฉ ื™ื•ื“ืขื™ื ืœืื ื“ืงืก ืืช ื›ืชื•ื‘ืช ื”-HTTPS. ืœืœื ืงื•ื“ ืกื˜ื˜ื•ืก, Apache ืฉื•ืœื— ื”ืคื ื™ื” ื–ืžื ื™ืช ืžืกื•ื’ 302. ื”ื“ื’ืœ L ืขื•ืฆืจ ืืช ืฉืืจ ื”ื—ื•ืงื™ื ืขื‘ื•ืจ ืื•ืชื” ื‘ืงืฉื”.

ื”ื—ื•ืง ื—ื™ื™ื‘ ืœืจื•ืฅ ืœืคื ื™ ื”ื‘ืœื•ืง ืฉืœ ื•ื•ืจื“ืคืจืก. ื”ื—ื•ืงื™ื ืฉืœ ื•ื•ืจื“ืคืจืก ืžื ืชื‘ื™ื ืืช ืจื•ื‘ ื”ื‘ืงืฉื•ืช ืœ-index.php, ื•ื”ืคื ื™ื” ืฉืžืžื•ืงืžืช ืื—ืจื™ื”ื ืœื ืชื•ืคืขืœ ืขื‘ื•ืจ ื›ืชื•ื‘ื•ืช ืจื’ื™ืœื•ืช ืฉืœ ืคื•ืกื˜ื™ื ื•ืขืžื•ื“ื™ื.

ืฉื™ืžื• ืœื‘ ืฉื“ืคื“ืคื ื™ื ืฉื•ืžืจื™ื ื”ืคื ื™ื•ืช 301 ื‘-cache ืœืื•ืจืš ื–ืžืŸ. ื‘ื–ืžืŸ ื”ื‘ื“ื™ืงื•ืช ื”ืฉืชืžืฉื• ื‘-R=302, ื‘ื“ืงื• ื›ืžื” ื›ืชื•ื‘ื•ืช, ื•ืจืง ืื– ื”ื—ืœื™ืคื• ืœ-R=301.

ืขื“ื›ื•ืŸ ื›ืชื•ื‘ื•ืช ื•ื•ืจื“ืคืจืก ืœ-HTTPS

ื•ื•ืจื“ืคืจืก ืขื“ื™ื™ืŸ ื‘ื•ื ื” ืืช ื”ืงื™ืฉื•ืจื™ื ืœืคื™ ื”ื”ื’ื“ืจื•ืช ืฉืœื”. ื”ื™ื›ื ืกื• ืœื”ื’ื“ืจื•ืช > ื›ืœืœื™ ื•ืฉื ื• ื’ื ืืช ื”ื›ืชื•ื‘ืช ืฉืœ ื•ื•ืจื“ืคืจืก ื•ื’ื ืืช ื”ื›ืชื•ื‘ืช ืฉืœ ื”ืืชืจ ืœ-https://.

ืื ื”ืฉื“ื•ืช ื”ืืœื” ืืคื•ืจื™ื (ื›ืœื•ืžืจ ืœื ื ื™ืชื ื™ื ืœืขืจื™ื›ื”), ื”ืขืจื›ื™ื ืžื•ื’ื“ืจื™ื ื‘ืงื•ื‘ืฅ wp-config.php. ืขื“ื›ื ื• ืื•ืชื ืฉื:

define( 'WP_HOME', 'https://example.com' );
define( 'WP_SITEURL', 'https://example.com' );

ืงื™ืฉื•ืจื™ http:// ื™ืฉื ื™ื ื‘ืชื•ื›ืŸ ื”ืคื•ืกื˜ื™ื ื’ื•ืจืžื™ื ืœืื–ื”ืจื•ืช ืขืœ ืชื•ื›ืŸ ืžืขื•ืจื‘. ืขื WP-CLI ืชื•ื›ืœื• ืœื”ื—ืœื™ืฃ ืื•ืชื ื‘ืžืกื“ ื”ื ืชื•ื ื™ื (ื’ื‘ื• ืงื•ื“ื, ื•ื”ืกื™ืจื• ืืช --dry-run ื›ืฉื”ื“ื•"ื— ื ืจืื” ืชืงื™ืŸ):

wp search-replace 'http://example.com' 'https://example.com' --skip-columns=guid --dry-run

ืื ืชืจืฆื• ืœืงื‘ืข ื’ื ื’ืจืกื” ืื—ืช ืฉืœ ื”ื“ื•ืžื™ื™ืŸ, ื”ื•ืกื™ืคื• ืืช ื”ื—ื•ืงื™ื ืœื”ืคื ื™ื” ืž-www ืœื›ืชื•ื‘ืช ืœืœื www (ืื• ืœื”ื™ืคืš).

ืœื•ืœืืช ื”ืคื ื™ื•ืช ืžืื—ื•ืจื™ Cloudflare, Proxy ืื• Load Balancer

ื›ืืฉืจ ื”-SSL ืžืกืชื™ื™ื ื‘-Proxy ืื• ื‘-Load Balancer, ืื•ืชื• Proxy ืžืชืงืฉืจ ืขื ื”ืฉืจืช ืฉืœื›ื ื‘-HTTP ืจื’ื™ืœ. ื‘ืžืฆื‘ ื›ื–ื” %{HTTPS} ืชืžื™ื“ off, ื›ืœ ื‘ืงืฉื” ืžื•ืคื ื™ืช ืฉื•ื‘, ื•ื”ื“ืคื“ืคืŸ ืžืฆื™ื’ ืืช ื”ืฉื’ื™ืื” ืดtoo many redirectsืด.

ื‘ืžืงื•ื %{HTTPS}, ื‘ื“ืงื• ืืช ื”-header ื‘ืฉื X-Forwarded-Proto ืฉื”-Proxy ืฉื•ืœื—:

# Force HTTPS behind a proxy that sets X-Forwarded-Proto
RewriteEngine On
RewriteCond %{HTTP:X-Forwarded-Proto} =http [NC]
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

ื”ืกืชืžื›ื• ืขืœ ื”-header ื”ื–ื” ืจืง ื›ืืฉืจ ื”-Proxy ื‘ืฉืœื™ื˜ืชื›ื ื•ื”ื•ื ื“ื•ืจืก ืืช ื”-header ื‘ื›ืœ ื‘ืงืฉื”. ื”ืชื™ืขื•ื“ ืฉืœ Apache ืขืœ ื›ืคื™ื™ืช HTTPS ืžืชืืจ ืืช ื”ืชืฆื•ืจื” ื”ื–ื• ื•ืืช ื”ื”ืกืชื™ื™ื’ื•ืช ืœื’ื‘ื™ื”.

ื•ื•ืจื“ืคืจืก ืฆืจื™ื›ื” ืœื“ืขืช ื’ื ืฉื”ื‘ืงืฉื” ื”ืžืงื•ืจื™ืช ื”ื’ื™ืขื” ื‘-HTTPS. ื”ื•ืกื™ืคื• ืืช ื”ืงื•ื“ ื”ื‘ื ืœ-wp-config.php, ืžืขืœ ื”ืฉื•ืจื” ืดThat's all, stop editing!ืด:

if ( isset( $_SERVER['HTTP_X_FORWARDED_PROTO'] ) && strpos( $_SERVER['HTTP_X_FORWARDED_PROTO'], 'https' ) !== false ) {
    $_SERVER['HTTPS'] = 'on';
}

ื‘-Cloudflare, ื”ืกื™ื‘ื” ื”ื ืคื•ืฆื” ื”ื™ื ืžืฆื‘ ื”-SSL/TLS ื‘ืฉื Flexible, ืฉื‘ื• Cloudflare ืžืชื—ื‘ืจ ืœืฉืจืช ืฉืœื›ื ื‘-HTTP. ื”ื’ื“ื™ืจื• ืืช ื”ืžืฆื‘ ืœ-Full (strict) ืขื ืชืขื•ื“ื” ืชืงืคื” ืขืœ ื”ืฉืจืช, ื›ืคื™ ืฉืžืชื•ืืจ ื‘ืžื“ืจื™ืš ืคืชืจื•ืŸ ืœื•ืœืื•ืช ื”ื”ืคื ื™ื” ืฉืœ Cloudflare.

ืฉืจืช Nginx ืื™ื ื• ืงื•ืจื ืืช .htaccess

ืฉืจืชื™ Nginx ืžืชืขืœืžื™ื ืžืงื‘ืฆื™ .htaccess, ื›ืš ืฉื”ืงื•ื“ ืฉืœืžืขืœื” ืœื ื™ืขืฉื” ื“ื‘ืจ. ื”ื•ืกื™ืคื• ื‘ืœื•ืง server ืฉืžืื–ื™ืŸ ืœืคื•ืจื˜ 80 ื•ืžืคื ื” ืœ-HTTPS:

server {
    listen 80;
    server_name example.com www.example.com;
    return 301 https://$host$request_uri;
}

ืื™ืŸ ืœื›ื ื’ื™ืฉื” ืœื”ื’ื“ืจื•ืช ื”ืฉืจืช? ื‘ืงืฉื• ืžื—ื‘ืจืช ื”ืื—ืกื•ืŸ ืœื”ื•ืกื™ืฃ ืืช ื”ื”ืคื ื™ื”.

ืฉืืœื•ืช ื ืคื•ืฆื•ืช

ื”ื ื” ื›ืžื” ืฉืืœื•ืช ืฉืขื•ืœื•ืช ืœื ืžืขื˜ ืœื’ื‘ื™ ื›ืคื™ื™ืช HTTPS ื‘ื•ื•ืจื“ืคืจืก:

ื”ื™ื›ืŸ ื‘ืงื•ื‘ืฅ .htaccess ืฆืจื™ืš ืœืžืงื ืืช ื—ื•ืง ื›ืคื™ื™ืช ื”-HTTPS?
ื‘ืจืืฉ ื”ืงื•ื‘ืฅ, ืžืขืœ # BEGIN WordPress. ืื ืชืžืงืžื• ืื•ืชื• ืื—ืจื™ ื”ื—ื•ืงื™ื ืฉืœ ื•ื•ืจื“ืคืจืก ื”ื•ื ืœื ื™ืจื•ืฅ ืขื‘ื•ืจ ื›ืชื•ื‘ื•ืช ืฉืœ ืคื•ืกื˜ื™ื ื•ืขืžื•ื“ื™ื, ื•ืื ืชืžืงืžื• ืื•ืชื• ื‘ืชื•ืš ืกื™ืžื•ื ื™ ื•ื•ืจื“ืคืจืก ื”ื•ื ื™ื™ืžื—ืง ื›ืฉื”ืงื™ืฉื•ืจื™ื ื”ืงื‘ื•ืขื™ื ื™ื™ืฉืžืจื•.
ืžื“ื•ืข ืžื•ืคื™ืขื” ื”ืฉื’ื™ืื” ืดtoo many redirectsืด ืื—ืจื™ ื›ืคื™ื™ืช HTTPS?
ื‘ื“ืจืš ื›ืœืœ ื”-SSL ืžืกืชื™ื™ื ื‘-Proxy ื›ืžื• Cloudflare, ื›ืš ืฉื”ืฉืจืช ืฉืœื›ื ืจื•ืื” ื›ืœ ื‘ืงืฉื” ื›-HTTP ื•ืžืžืฉื™ืš ืœื”ืคื ื•ืช. ื‘ื“ืงื• ืืช X-Forwarded-Proto ื‘ืžืงื•ื %{HTTPS}, ื•ื‘-Cloudflare ืฉื ื• ืืช ืžืฆื‘ ื”-SSL/TLS ืž-Flexible ืœ-Full (strict).
ื”ืื ื”ืคื ื™ื™ืช ื”-HTTPS ืฆืจื™ื›ื” ืœื”ื™ื•ืช 301 ืื• 302?
ื‘ืืชืจ ื”ื—ื™ ื”ืฉืชืžืฉื• ื‘-301, ืžื›ื™ื•ื•ืŸ ืฉื”ืžืขื‘ืจ ืœ-HTTPS ื”ื•ื ืงื‘ื•ืข ื•ืžื ื•ืขื™ ื”ื—ื™ืคื•ืฉ ืฆืจื™ื›ื™ื ืœืื ื“ืงืก ืืช ื›ืชื•ื‘ื•ืช ื”-HTTPS. ื‘ื–ืžืŸ ื‘ื“ื™ืงื•ืช ื”ืฉืชืžืฉื• ื‘-302, ืžื›ื™ื•ื•ืŸ ืฉื“ืคื“ืคื ื™ื ืฉื•ืžืจื™ื ื”ืคื ื™ื•ืช 301 ื‘-cache.
ื”ืื ื”ื”ืคื ื™ื” ื‘-.htaccess ืคื•ืชืจืช ืื–ื”ืจื•ืช ืชื•ื›ืŸ ืžืขื•ืจื‘ (Mixed Content)?
ืœื. ืชื•ื›ืŸ ืžืขื•ืจื‘ ื ื•ื‘ืข ืžื›ืชื•ื‘ื•ืช http:// ื‘ืชื•ืš ื”ืขืžื•ื“ื™ื ืขืฆืžื, ืœืžืฉืœ ืชืžื•ื ื•ืช ื‘ืชื•ื›ืŸ ื”ืคื•ืกื˜ื™ื. ืขื“ื›ื ื• ืืช ื”ื›ืชื•ื‘ืช ืฉืœ ื•ื•ืจื“ืคืจืก ื•ืืช ื”ื›ืชื•ื‘ืช ืฉืœ ื”ืืชืจ ืœ-HTTPS, ื•ื”ื—ืœื™ืคื• ืืช ื”ื›ืชื•ื‘ื•ืช ื”ื™ืฉื ื•ืช ื‘ืžืกื“ ื”ื ืชื•ื ื™ื.
ื“ื™ื•ืŸ ื•ืชื’ื•ื‘ื•ืช
[  0 ืชื’ื•ื‘ื•ืช  ]

ื”ืฉืื™ืจื• ืชื’ื•ื‘ื”

ื”ื•ืกื™ืคื• ืงื•ื“ ื‘ืืžืฆืขื•ืช ื”ื›ืคืชื•ืจื™ื ืžื˜ื”. ืœืžืฉืœ, ื‘ื›ื“ื™ ืœื”ื•ืกื™ืฃ PHP ืœื—ืฆื• ืขืœ ื”ื›ืคืชื•ืจ PHP ื•ื”ื•ืกื™ืคื• ืืช ื”ืงื•ื“ ื‘ืชื•ืš ื”ืฉื•ืจื˜ืงื•ื“. ืžืฆืืชื ืฉื’ื™ืื” ื‘ืคื•ืกื˜? ืขื“ื›ื ื• ืื•ืชื ื•...