2013-10-03 28 views
12

Thư mục Wordpress của tôi có tại www.example.com/blogChuyển hướng lực lượng HTTPS không hoạt động trong Wordpress

Gần đây tôi đã thay đổi toàn bộ trang web của mình để buộc HTTPS. Vì vậy, tệp .htaccess của tôi trong/blog/trông giống như sau:

<IfModule mod_rewrite.c> 
RewriteEngine On 
RewriteBase /blog/ 
RewriteRule ^index\.php$ - [L] 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule . /blog/index.php [L] 
</IfModule> 

RewriteEngine on 
RewriteCond %{HTTPS} off 
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} 

Tôi cũng đã thay đổi URL trang web trong cài đặt Wordpress thành HTTPS.

Điều này hoạt động hoàn hảo trong trang chủ, nhưng trong bất kỳ trang đăng nào, người dùng cuối có thể thay đổi thành HTTP không an toàn, bằng cách thay đổi URL và nhấn enter. Ví dụ, họ có thể gõ trực tiếp: http://www.example.com/blog/post-1/ và nó sẽ tải dưới dạng HTTP.

Điều gì xảy ra với tệp .htaccess của tôi? Đâu là kết thúc lỏng lẻo?

Trả lời

30

Thay đổi thứ tự của các quy tắc. Chuyển hướng đầu tiên đến https và sau đó cho phép WP tiếp quản tất cả các yêu cầu của bạn.

<IfModule mod_rewrite.c> 
RewriteEngine On 

RewriteCond %{HTTPS} off 
RewriteRule^https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301] 

RewriteBase /blog/ 
RewriteRule ^index\.php$ - [L] 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule . /blog/index.php [L] 
</IfModule> 
+2

Cảm ơn bạn rất nhiều! Điều đó đã làm các trick –

+1

Tôi nghĩ rằng nó chắc chắn là một lỗi cú pháp trong '.htaccess' của tôi, nhưng chắc chắn nó đã được WordPress viết lại đến đầu tiên. Cám ơn vì cái này! – cfx

+1

Hoạt động hoàn hảo cho tôi, cảm ơn vì điều này. – ColinMcDermott

0

Bạn cũng có thể thêm hai dòng sau vào wp-config.php

define('WP_SITEURL', 'https://' . $_SERVER['HTTP_HOST']); 
define('WP_HOME', 'https://' . $_SERVER['HTTP_HOST']); 

Vì vậy, bạn có thể dễ dàng tạo điều kiện cho http cho môi trường dev và https cho sống như vậy:

if(strpos($_SERVER['HTTP_HOST'], 'livedomain.com') !== FALSE){ 
    define('WP_SITEURL', 'https://' . $_SERVER['HTTP_HOST']); 
    define('WP_HOME', 'https://' . $_SERVER['HTTP_HOST']); 
} else { 
    define('WP_SITEURL', 'http://' . $_SERVER['HTTP_HOST']); 
    define('WP_HOME', 'http://' . $_SERVER['HTTP_HOST']); 
} 
Các vấn đề liên quan