Thứ hai, 12/08/2013 | 00:00 GMT+7

Cách tạo chuyển hướng tạm thời và vĩnh viễn với Apache và Nginx


Chuyển hướng HTTP là gì?

Chuyển hướng HTTP, hoặc chuyển hướng URL, là một kỹ thuật trỏ một domain hoặc địa chỉ đến một domain hoặc địa chỉ khác. Có nhiều cách sử dụng để chuyển hướng và một số loại chuyển hướng khác nhau cần xem xét.

Khi bạn tạo nội dung và quản trị server , bạn thường thấy cần phải chuyển hướng lưu lượng truy cập từ nơi này sang nơi khác. Hướng dẫn này sẽ thảo luận về các trường hợp sử dụng khác nhau cho các kỹ thuật này và cách thực hiện chúng trong Apache và Nginx.

Tại sao Server Sử dụng Chuyển hướng?

Chuyển hướng được sử dụng khi nào một trang web cần mọi người yêu cầu một địa chỉ được chuyển hướng đến một địa chỉ khác. Có rất nhiều tình huống mà bạn có thể thấy mình ở vị trí này.

Chuyển sang một domain khác

Nếu bạn đã cài đặt sự hiện diện trên web và muốn thay đổi domain của bạn , tốt nhất là bạn không nên từ bỏ domain cũ của bạn .

Dấu trang đến trang web và các liên kết đến trang web nằm trên các trang khác trên internet sẽ bị hỏng nếu nội dung của bạn biến mất mà không có bất kỳ hướng dẫn nào cho trình duyệt về cách tìm vị trí mới của nó.

Thay đổi domain mà không chuyển hướng sẽ khiến trang web mất lưu lượng truy cập từ những khách truy cập trước đó và mất tất cả uy tín mà bạn đã nỗ lực cài đặt .

Mở rộng sang chiếm các domain tương tự

Thông thường, sẽ rất hữu ích nếu bạn đăng ký nhiều biến thể của tên để hưởng lợi từ việc user nhập các địa chỉ tương tự như domain chính của bạn.

Ví dụ: nếu bạn có một domain có tên là "mymessyspiders.com", bạn cũng có thể mua các domain cho "mymessyspiders.net" và "mymessyspiders.org" và chuyển hướng cả hai đến trang web "mymessyspiders.com" của bạn.

Điều này cho phép bạn bắt được những user có thể đang cố truy cập vào trang web bằng địa chỉ sai. Nó cũng có thể giúp ngăn trang web khác sử dụng một domain tương tự và trục lợi từ sự hiện diện trên web của bạn.

Tạo ra trải nghiệm bền bỉ bất chấp thay đổi tên trang

Đôi khi, cần phải thay đổi tên của các trang đã được xuất bản và nhận được lưu lượng truy cập trên trang web .

Thông thường, điều này sẽ dẫn đến lỗi 404 Not Found hoặc có thể là một lỗi khác tùy thuộc vào cài đặt bảo mật của bạn. Có thể tránh những điều này bằng cách dẫn khách truy cập của bạn đến một trang khác có chứa đúng nội dung mà họ đang cố truy cập.

Bắt buộc SSL

Một cách sử dụng đơn giản nhưng phổ biến cho chuyển hướng là hướng tất cả lưu lượng truy cập trang web sử dụng SSL thay vì HTTP tiêu chuẩn.

Sử dụng chuyển hướng, có thể thực hiện tất cả các yêu cầu cho "http://www.mysite.com" được chuyển hướng đến "https://www.mysite.com".

Lưu ý HTTPS thay vì HTTP.

Phương pháp chuyển hướng

Có một số loại chuyển hướng URL khác nhau, mỗi loại có ý nghĩa khác nhau đối với trình duyệt khách hàng.

Hai loại phổ biến nhất là 302 chuyển hướng tạm thời và 301 chuyển hướng vĩnh viễn.

Chuyển hướng tạm thời

Chuyển hướng tạm thời rất hữu ích nếu nội dung web của bạn cho một URL nhất định tạm thời cần được phân phát ở một vị trí khác.

Ví dụ: nếu bạn đang thực hiện bảo trì trang web, bạn có thể cần sử dụng chuyển hướng tạm thời của tất cả các trang cho domain của bạn đến trang giải thích để thông báo cho khách truy cập của bạn rằng bạn sẽ sớm quay lại.

Chuyển hướng tạm thời thông báo cho trình duyệt đó rằng nội dung tạm thời được đặt ở một vị trí khác, nhưng họ nên tiếp tục cố gắng truy cập vào URL ban đầu.

Chuyển hướng vĩnh viễn

Chuyển hướng vĩnh viễn rất hữu ích khi nội dung của bạn đã được chuyển đến một vị trí mới mãi mãi.

Điều này hữu ích khi bạn cần thay đổi domain hoặc khi URL cần thay đổi vì những lý do khác và vị trí cũ sẽ không còn được sử dụng.

Chuyển hướng này thông báo cho trình duyệt rằng nó không còn yêu cầu URL cũ nữa và nên cập nhật thông tin của nó để trỏ đến URL mới.

Cách chuyển hướng trong Apache

Apache có thể chuyển hướng bằng một số công cụ khác nhau. Các cách đơn giản nhất được thực hiện với các công cụ từ module "mod_alias", nhưng có thể tạo các chuyển hướng mở rộng hơn với "mod_rewrite".

Sử dụng Chỉ thị chuyển hướng

Trong Apache, bạn có thể thực hiện các chuyển hướng đơn giản trên một trang bằng cách sử dụng lệnh "Redirect", có trong module "mod_alias". Lệnh này có ít nhất hai đối số: URL cũ và URL mới.

Ở dạng đơn giản nhất, bạn có thể thực hiện chuyển hướng với các dòng sau trong cấu hình server của bạn :

<VirtualHost *:80>
	ServerName www.domain1.com
	Redirect / http://www.domain2.com
</VirtualHost>

<VirtualHost *:80>
	ServerName www.domain2.com
	. . .
	. . .
</VirtualHost>

Chuyển hướng này hướng dẫn trình duyệt chuyển hướng tất cả các yêu cầu cho "www.domain1.com" đến "www.domain2.com". Điều này chỉ dành cho một trang duy nhất, không phải cho toàn bộ trang web

Theo mặc định, chỉ thị "Chuyển hướng" cài đặt chuyển hướng 302 hoặc tạm thời.

Nếu bạn muốn tạo chuyển hướng vĩnh viễn, bạn có thể làm như vậy bằng một trong hai cách sau:

Redirect 301 /oldlocation http://www.domain2.com/newlocation
Redirect permanent /oldlocation http://www.domain2.com/newlocation

Sử dụng Chỉ thị RedirectMatch

Để chuyển hướng nhiều trang, bạn có thể sử dụng lệnh "RedirectMatch", cho phép bạn chỉ định các mẫu đối sánh folder bằng cách sử dụng biểu thức chính quy.

Điều này sẽ cho phép bạn chuyển hướng toàn bộ folder thay vì chỉ các file đơn lẻ.

RedirectMatch đối sánh các mẫu trong ngoặc đơn và sau đó tham chiếu văn bản phù hợp trong chuyển hướng bằng cách sử dụng "$ 1", trong đó 1 là group văn bản đầu tiên. Các group tiếp theo được đánh số thứ tự theo thứ tự.

Ví dụ: nếu ta muốn đối sánh mọi yêu cầu cho một thứ gì đó trong folder "/ images" với một domain phụ có tên "images.example.com", ta có thể sử dụng như sau:

RedirectMatch ^/images/(.*)$ http://images.example.com/$1

Giống như chỉ thị "Chuyển hướng", bạn có thể chỉ định loại chuyển hướng bằng cách thêm mã chuyển hướng trước luật vị trí URL.

Sử dụng mod_rewrite để chuyển hướng

Cách linh hoạt nhất, nhưng phức tạp nhất để tạo luật chuyển hướng là với module có tên "mod_rewrite".

Điều này nằm ngoài phạm vi của bài viết này, nhưng bạn có thể tìm hiểu cách sử dụng mod_rewrite trong bài viết này.

Cách chuyển hướng trong Nginx

Chuyển hướng trong Nginx theo nhiều cách đơn giản hơn nhiều để thực hiện. Thông thường, bạn có thể chuyển hướng bằng cách tạo một khối server cho nội dung bạn muốn chuyển hướng.

Ví dụ: nếu bạn muốn chuyển hướng các yêu cầu cho "domain1.com" đến "domain2.com", bạn có thể tạo một khối server giống như sau:

server {
	listen 80;
	server_name domain1.com;
	return 301 $scheme://domain2.com$request_uri;
}

Lệnh "return" thực hiện thay thế URL và sau đó trả về mã trạng thái được cấp cho nó và URL chuyển hướng.

Trong trường hợp này, nó sử dụng biến "$ Scheme" để sử dụng bất kỳ schemas nào đã được sử dụng trong yêu cầu ban đầu (http hoặc https). Sau đó, nó trả về mã chuyển hướng vĩnh viễn 301 và URL mới được hình thành.

Để xử lý chuyển hướng folder đến một domain phụ riêng biệt, ta có thể thực hiện thao tác tương tự như chuyển hướng folder Apache bằng cách sử dụng chỉ thị "viết lại":

rewrite ^/images/(.*)$ http://images.example.com/$1 redirect;

Chỉ thị này, khi được đặt trong một khối server , sẽ đưa ra chuyển hướng tạm thời cho các yêu cầu bên trong folder "images" tới domain phụ "images.example.com".

Đối với chuyển hướng vĩnh viễn, bạn có thể thay đổi "chuyển hướng" thành "vĩnh viễn" ở cuối câu lệnh.

Kết luận

Đến đây bạn có kiến thức để chuyển hướng yêu cầu của bạn đến các vị trí mới. Đảm bảo sử dụng đúng loại chuyển hướng, vì việc sử dụng chuyển hướng tạm thời không đúng cách có thể ảnh hưởng đến xếp hạng tìm kiếm của bạn.

Sử dụng chuyển hướng một cách chính xác sẽ cho phép bạn tận dụng sự hiện diện trên web hiện tại của bạn đồng thời cho phép bạn sửa đổi cấu trúc trang web của bạn nếu cần. Nếu bạn muốn tìm hiểu thêm về các cách bạn có thể chuyển hướng người truy cập của bạn , cả Apache và Nginx đều có tài liệu tuyệt vời về chủ đề này.

Bởi Justin Ellingwood

Tags:

Các tin liên quan

Cách cấu hình web server Apache trên Ubuntu hoặc Debian VPS
2013-08-07
Cách thiết lập Apache với Chứng chỉ SSL đã ký miễn phí trên VPS
2013-07-17
Cách bắt đầu với mod_pagespeed với Apache trên Ubuntu và Debian Cloud Server
2013-07-09
Cách bắt đầu với mod_pagespeed với Apache trên server cloud CentOS và Fedora
2013-07-09
Cách tạo chứng chỉ SSL trên Apache trên Arch Linux
2012-11-09
Cách cài đặt LAMP (Linux, Apache, MySQL, PHP) trên Fedora
2012-11-06
Cách thiết lập server ảo Apache trên Arch Linux
2012-09-11
Cách tạo trang 404 tùy chỉnh trong Apache
2012-07-10
Cách tạo chứng chỉ SSL trên Apache cho CentOS 6
2012-06-06
Cách thiết lập server ảo Apache trên CentOS 6
2012-06-03