2011-10-27 1 views
7

Tôi đang cố gắng ép buộc www. trên tất cả các trang của trang web của tôi. Tôi có cài đặt wordpress trong một thư mục trên trang web chính của tôi (/ blog). Trong thư mục/blog có tệp .htaccess với các thông tin sau:Wordpress .htaccess www. không buộc

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

Trong thư mục chính của trang web. Tôi có tệp .htaccess có:

RewriteEngine on 
RewriteCond %{HTTP_HOST} !^www.sitename.com [NC] 
RewriteRule (.*) http://www.sitename.com/$1 [R=301,L] 
RewriteRule ^blog/index\.php$ - [L] 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^blog/(.*)$ /blog/index.php [L] 

Trong wordpress có tùy chọn được đặt cho www. Www. xuất hiện trên tất cả các trang trừ khi tôi đi thẳng các địa chỉ site.com/blog

+2

_ "Địa chỉ WordPress" _ và _ "Địa chỉ trang web" _ bao gồm 'www.' trong URL trong' Cài đặt -> Chung'? – Shef

+1

Chính xác nó có chứa www. –

+0

Thử thay thế 'RewriteCond% {HTTP_HOST}!^Www.sitename.com [NC]' bằng 'RewriteCond% {HTTP_HOST}^sitename.com [NC] ' – Shef

Trả lời

4
RewriteCond %{HTTP_HOST} !^www\.(.*) 
RewriteRule (.*) http://www.%{HTTP_HOST}/$1 [R=301,L] 
7

Go Settings -> General: WordPress Address (URL) Site Address (URL)

Và đặt cả của họ để www.yoursite.com (thay vì yoursite.com), wordpress automagically chăm sóc cho thiết lập tất cả các url để www.yoursite.com và đó là nó.

Nếu chưa đủ, bạn không nên chỉnh sửa tệp .htaccess, vì bất cứ lúc nào bạn lưu hoặc tải lại cài đặt liên kết cố định, Wordpress sẽ ghi đè lên .htaccesss của bạn (một số plugin có thể làm điều đó).

Nếu bạn muốn viết lại URL của mình, bạn nên làm điều đó với WP Rewrite (Codex) hoặc nếu bạn muốn tiếp cận đơn giản hơn một chút, có một plugin tốt cho điều đó được gọi là Redirection (Wordpress.org Plugin Directory).

Trong plugin Redirection bạn chỉ có thể đặt tùy chọn thành * .mydomain.com/* để chuyển hướng đến www.mydomain.com/* bằng 301 và điều đó sẽ xử lý htaccess của bạn miễn là bạn giữ plugin hoạt động.

Hope this helps :)

+1

Cả Địa chỉ Wordpress và Địa chỉ Trang được đặt thành www.site.com. Tôi không muốn chạy plugin. Bất cứ một đề nghị nào khác? –

+0

Tại sao bạn không chạy plugin? Nếu bạn không muốn chạy một plugin, tôi sợ chỉ có tùy chọn khác của bạn đang cố gắng chạy WP Rewrite từ tệp mẫu chức năng (không chắc chắn nếu điều đó sẽ làm việc, nhưng bạn có thể thử điều đó). Bạn không thể viết lại chỉ bằng .htaccess. Bạn có thể chọn cách tiến hành. Như tôi đã nói trước đây, tôi muốn đề xuất plugin, đó là cách dễ nhất và phù hợp nhất để thực hiện. Bạn cũng có thể viết một đoạn nhỏ của plugin của riêng bạn. Hoặc viết plugin của riêng bạn (hoặc functions.php) hoặc sử dụng một plugin hiện có, có thể bạn sẽ sử dụng WP Rewrite, "Chuyển hướng" chỉ thực hiện công việc khó khăn cho bạn. – Norris

+0

Tôi không muốn chạy plugin vì tôi muốn biết vấn đề nằm ở đâu. Vấn đề không phải là tôi cần phải thêm một chuyển hướng nó là một trong những đang xảy ra và nó không nên. Như tôi đã nói trong các nhận xét ở trên, nếu tôi truy cập www.site.com/blog, nó sẽ được chuyển hướng đến site.com/blog/ nhưng nếu tôi truy cập www.site.com/blog/ thì không có chuyển hướng nào. –

2

Trong .htaccess của quá trình cài đặt WordPress (/ blog/trong trường hợp của bạn), bạn có thể thêm đoạn mã sau TRÊN dòng mà đọc # BEGIN WordPress

<IfModule mod_rewrite.c> 
RewriteEngine On 
RewriteCond %{HTTP_HOST} !^www\.domain\.com$ [NC] 
RewriteRule ^(.*)$ "http\:\/\/www\.domain\.com\/subdirectory\/$1" [R=301,L] 
</IfModule> 
## Redirect primary WordPress URL to WWW version 

Rõ ràng , thay thế "domain.com" bằng tên miền thực của bạn và "thư mục con" bằng tên của thư mục con nơi WordPress được cài đặt. (/ blog/trong yêu cầu của OP).

+0

Tôi nhận ra câu hỏi này là một vài năm tuổi, nhưng tôi đã tìm kiếm TẤT CẢ TẤT CẢ ngày hôm qua cố gắng tìm ra vấn đề chính xác này. Đó là chỉ với sự giúp đỡ của máy chủ web của tôi (HostDime) mà chúng tôi đã có thể tìm ra nó. Ban đầu, tôi nghĩ rằng đó là cấu hình của .htaccess trong thư mục gốc của trang web, nhưng ... hóa ra mã bổ sung này là cần thiết để giải quyết vấn đề này. Có NÊN là một plugin cho điều này, nhưng kể từ khi bạn không bao giờ biết một plugin sẽ được hỗ trợ bao lâu .... – flcowboy7

0

có tùy chọn cho bạn:

  1. sử dụng wp-config.php add:

    define ('WP_HOME', 'http://www.domainname.com'); xác định ('WP_SITEURL', 'http://www.domainname.com');

  2. sử dụng wp-admin

Đăng nhập vào của bạn wp-admin Browse để 'Settings' -> 'General' Dưới 'Địa chỉ WordPress (URL)' và 'Site Address (URL)' thêm www vào địa chỉ như được hiển thị bên dưới