Tôi cho rằng phiên bản tĩnh của trang web của bạn (tại tĩnh.example.com
) thực sự là một trang web tĩnh không phải WordPress nên bản thân nó không thể giải thích cho bất kỳ chuyển hướng nào.
Không có gì thực sự "sai" với quy tắc của bạn như đã đăng. Tuy nhiên, ...
Chuyển hướng "WordPress" 301 (vĩnh viễn) trước đó từ không phải www sang www sẽ được lưu vào bộ nhớ cache (liên tục) bởi bộ đệm của trình duyệt (và có thể là trung gian). Điều này sẽ cần phải được xóa theo cách thủ công cho chuyển hướng của bạn trong .htaccess
để có bất kỳ tác dụng.
Chuyển hướng của bạn phải đi tại hàng đầu sau đó .htaccess
tập tin trước khối mã WordPress (viết lại vào bộ điều khiển phía trước), tức là. trước các # BẮT ĐẦU WordPress
đánh dấu nhận xét. Nếu bạn đặt chuyển hướng ở cuối tệp (hoặc sau khối mã WordPress), nó sẽ chỉ được xử lý đối với các yêu cầu đối với tài nguyên tĩnh (và thư mục). Các URL (ảo) của WordPress sẽ không được chuyển hướng vì yêu cầu đã được viết lại thành index.php
(bộ điều khiển phía trước WordPress).
Qua một bên:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{HTTP_HOST} ^mydomain.com
RewriteCond %{HTTP_HOST} !^www.mydomain.com
RewriteRule ^(.*) https://static.mydomain.com/$1 [R=302,L]
</IfModule>
Chỉ cần dọn dẹp một chút... bạn không cần phải lặp lại Viết LạiEngine Trên
chỉ thị, vì điều này đã xuất hiện sau trong tệp, trong khối mã WordPress.
Bạn không cần <IfModule>
vỏ bánh. Chuyển hướng này phải xảy ra, nó không phải không bắt buộc.
Thư hai điều kiện, tình trạng, trạng thái (Viết lạiĐiều kiện
chỉ thị) là không cần thiết. Không cần phải kiểm tra xem Chủ nhà
Là Một
và không b
. (Nếu là Một
sau đó nó không thể được b
cũng.)
Vì vậy, những điều trên có thể được đơn giản hóa thành:
# Tạm thời chuyển hướng đỉnh tên miền sang tên miền phụ "tĩnh"
RewriteCond %{HTTP_HOST} ^example\.com
RewriteRule (.*) https://static.example.com/$1 [R=302,L]
# BẮT ĐẦU WordPress
: Các chỉ thị khác tuân theo ....