2011-09-21 41 views
10

Tôi đang cố gắng để buộc www cho địa chỉ trang web của tôi với .htaccess:mod_rewrite - thêm www

RewriteCond %{HTTP_HOST} ^mysite\.com$ [NC] 
RewriteRule ^(.*)$ http://www.mysite.coml/$1 [R=301,L] 

Nếu tôi mở mysite.com này làm việc ok - nó thêm www. Nó trở thành http://www.mysite.com/index.php.

Nhưng nếu tôi mở mysite.com/subpage tôi chuyển hướng đến http://www.mysite.com/index.php một lần nữa, thay vì http://www.mysite.com/subpage.

Nhưng nếu tôi mở http://www.mysite.com/subpage Tôi không nhận được chuyển hướng (đó là hành vi mong đợi).

Làm cách nào để khắc phục sự cố này? Tôi muốn chuyển hướng tất cả yêu cầu đến trang web của tôi tới tên miền phụ www.

Trả lời

12

Vấn đề là ngay tại đây:

RewriteCond %{HTTP_HOST} ^mysite\.com$ [NC] 

^ xác định sự bắt đầu của chuỗi khi $ định cuối cùng.

Để làm cho nó hoạt động, bạn cần phải có ký tự đại diện được chọn sau .com hoặc .+.

để nhắc lại những gì Alex cho biết:

<IfModule mod_rewrite.c> 
    RewriteCond %{HTTPS} !=on 
    RewriteCond %{HTTP_HOST} !^www\..+$ [NC] 
    RewriteRule^http://www.%{HTTP_HOST}%{REQUEST_URI} [R=301,L] 
</IfModule> 
17

Từ tuyệt vời HTML5 Boilerplate .htaccess:

<IfModule mod_rewrite.c> 
    RewriteCond %{HTTPS} !=on 
    RewriteCond %{HTTP_HOST} !^www\..+$ [NC] 
    RewriteRule^http://www.%{HTTP_HOST}%{REQUEST_URI} [R=301,L] 
</IfModule> 
6

Thực ra, tôi phải đồng ý với ông Szanto.

Nó sẽ xuất hiện vấn đề là không phải với:

RewriteCond %{HTTP_HOST} ^mysite\.com$ [NC] 

Qua một số nghiên cứu bổ sung (thông qua Google) tôi thấy rằng đây làm việc rất lớn đối với tôi:

<IfModule mod_rewrite.c> 
    RewriteCond %{HTTPS} !=on 
    RewriteCond %{HTTP_HOST} ^mysite\.com$ [NC] 
    RewriteRule^http://www.%{HTTP_HOST}%{REQUEST_URI} [R=301,L] 
</IfModule> 

của ông Szanto câu trả lời, trong khi được định dạng tốt, dường như chuyển hướng tất cả các yêu cầu bị thiếu 'www' được chuyển hướng với 'www' được đính kèm. Đây không phải là kết quả mong muốn với hầu hết các tên miền phụ. Mã trên chỉ chuyển hướng nếu không có 'www' VÀ không có tên miền phụ trước tên miền TL.

Hy vọng điều này sẽ giúp người khác.

+0

Tôi thích câu trả lời cao nhất - bất kỳ ai sử dụng tên miền phụ đều phải cụ thể hơn để không thêm www không cần thiết (và không chính xác). – Debriter

Các vấn đề liên quan