2009-11-06 40 views
9

Tôi đang chạy nền tảng CodeIgniter, trong đó sử dụng .htaccess để chấp nhận các URL như.htaccess Chuyển phi WWW để WWW giữ gìn URI chuỗi

http://www.mysite.com/controller/function/argument 

Tôi hiện đang sử dụng một số viết lại .htaccess, cụ thể là (giản thể):

RewriteEngine On 
RewriteCond %{REQUEST_URI} !^(/index\.php|/images|/assets) 
RewriteRule ^(.*)$ /index.php/$1 [L] 

Tôi muốn thêm quy tắc viết lại để chuyển hướng tất cả các yêu cầu không www đến www. Tôi cũng muốn chuỗi URI theo tên miền để giữ nguyên trong chuyển hướng. Ví dụ: nếu người dùng thực hiện yêu cầu cho http://mysite.com/controller/function/argument, tôi muốn tệp .htaccess ghi lại yêu cầu trong trình duyệt dưới dạng http://www.mysite.com/controller/function/argument và sau đó xử lý yêu cầu.

Trả lời

10

Nó phải là một cái gì đó như thế này:

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

Điều này sẽ không ảnh hưởng đến quyền RewriteRule thứ hai của tôi? Tôi hiểu RewriteCond của bạn, tôi không muốn áp dụng các quy tắc mà tôi đã có. –

+0

Nếu bạn thêm mỏ của tôi làm cái đầu tiên, nó sẽ chỉ được kích hoạt nếu máy chủ không phải là www.mysite.com. Nếu nó được kích hoạt, sẽ có một HTTP chuyển hướng, và truy vấn HTTP thứ hai sẽ kích hoạt viết lại của riêng bạn nếu các điều kiện được đáp ứng – rossoft

+0

Xem thêm thông tin tại đây: http://www.webconfs.com/how-to-redirect- a-webpage.php – rossoft

14

Tôi đã có một vấn đề tương tự, và .htaccess này làm việc cho tôi

RewriteEngine On       

#This bit rewrites your host name to include www 
RewriteCond %{HTTP_HOST} !^www\.example\.com [NC] 
RewriteRule ^(.*)$ http://www.example.com/$1 [R=301,NC,L] 

#This bit does the codeigniter magic 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^(.*)$ /index.php/$1 [L] 
+0

nó hoạt động. Điều gì sẽ xảy ra nếu tôi muốn thêm quy tắc ngoại trừ blog.example.com không được chuyển hướng đến www? – Permana

+0

thử 'RewriteCond% {HTTP_HOST}!^(Www | blog) \. Example \ .com [NC]' – ekhaled

0

Nếu bạn đang ở trên apache 2.4, Bạn có thể sử dụng sau đây chuyển hướng đơn giản:

<if "%{HTTP_HOST} =='example.com'"> 
Redirect/http://www.example.com/ 
</if> 
Các vấn đề liên quan