Nhiều web developer cần cho phép người dùng truy cập vào trang web hoặc ứng dụng của họ thông qua cả subdomain www và domain gốc (non-www). Khi truy cập vào www.my-website.vietnixhosting.net
và my-website.vietnixhosting.
thì người dùng đều có những trải nghiệm như nhau. Cách tốt nhất cho SEO là chọn domain mà bạn muốn ưu tiên, sau đó cho web server chuyển hướng người dùng truy cập đến domain ưu tiên đó. Trong bài viết hướng dẫn về cách chuyển hướng www đến Non-www với Apache trên Centos 7 này, bạn sẽ được hướng dẫn cấu hình chuyển hướng 301 bằng Apache trên CentOS 7.
Tổng quan về chuyển hướng www đến Non-www với Apache trên Centos 7
Có nhiều loại chuyển hướng HTTP nhưng bạn nên sử dụng chuyển hướng 301. Khi chuyển hướng client sẽ được thông báo: “The website you have requested has permanently moved to another URL. Go there instead.” Khi nhận được mã phản hồi HTTP 301 từ máy chủ, trình duyệt sẽ gửi yêu cầu thứ hai đến URL mới được cung cấp bởi máy chủ. Trang web sẽ được hiển thị và người dùng thậm chí không nhận ra rằng đã được chuyển hướng.
Vậy tại sao không cấu hình web server chỉ phục vụ một trang web cho các yêu cầu đến từ cả hai tên miền? Khi làm vậy thì lợi ích SEO khi chuyển hướng 301 không được phát huy. Chuyển hướng vĩnh viễn cho các công cụ tìm kiếm biết rằng web của bạn có duy nhất một vị trí và sẽ cải thiện xếp hạng tìm kiếm của URL đó.
Chuẩn bị để chuyển hướng www đến Non-www với Apache trên Centos 7
Để thực hiện các bước trong bài viết này, bạn cần có:
- Quyền quản trị viên Superuser trên máy chủ đang chạy Apache.
- Apache đã được cài đặt và cấu hình để phục vụ trang web của bạn.
- Một tên miền. Nếu chưa có tên miền, bạn có thể liên hệ Vietnix để được tư vấn đăng ký tên miền phù hợp với nhu cầu của bạn.
Bước 1: Cấu hình bản ghi DNS
Đầu tiên, bạn cần chỉ định cả www.my-website.vietnixhosting.net
và my-website.vietnixhosting.net
đến máy chủ chạy Apache. Trong bài viết giả sử tên miền của bạn là my-websit
.vietnixhosting.net
. Bạn hãy hay thế bằng tên miền của mình khi nào bạn thấy ở dưới. Tiếp theo, tạo một bản ghi DNS A cho mỗi tên chỉ định đến địa chỉ IP máy chủ Apache của bạn.
Mở web control panel của nhà cung cấp DNS của bạn. Bài viết này sử dụng Vietnix DNS.
Trong form Quản lý Domain, nhấn vào nút + màu xanh bên phải để tiến hành nhập tên miền đã đăng ký vào các trường thông tin.
Trong ví dụ này: Domain đầy đủ là www.my-website.vietnixhosting.net
cùng với my-website.vietnixhosting.net
và cả hai đều sẽ trỏ về IP là 150.81.136.144.
Trang mới của tên miền sẽ được đưa ra. Đây là nơi bạn có thể xem, thêm và xóa các bản ghi cho tên miền. Ở bản DNS record thứ hai, người dùng vẫn có thể thay A record bằng CNAME record, là alias chỉ định đến một cái tên khác thay vì là trỏ về IP. Bạn có thể tạo CNAME record để chỉ định www.my-website.vietnixhosting.net
đến my-website.vietnixhosting.net
. Bất kỳ yêu cầu HTTP nào cho subdomain www sẽ đều đi đến máy chủ vì bạn vừa tạo bản ghi A cho tên miền gốc. Nhưng để đơn giản, bạn chỉ cần tạo một bản ghi A khác giống như bản ghi đầu tiên.
Khi bạn đã tạo cả hai bản ghi thì kết quả sẽ trông giống như sau:
Sau khi có hai bản ghi, các request cho
và my-website.vietnixhosting.net
www.my-website.vietnixhosting.net
đều sẽ đến máy chủ Apache của bạn. Bước tiếp theo, bạn sẽ thực hiện cấu hình máy chủ.
Nếu bạn đang cần một máy chủ VPS Centos 7 để cài đặt Apache, thì Vietnix là một trong những địa chỉ đáng tin cậy mà bạn có thể tham khảo. Vietnix cung cấp cho khách hàng nhiều gói dịch vụ VPS khác nhau với nhiều tính năng và giá cả phù hợp với nhu cầu của từng khách hàng. Bao gồm: Cloud Server, VPS Giá Rẻ, VPS Cao Cấp, VPS NVMe.
Một số tính năng nổi bật của VPS Vietnix:
- Tốc độ cao, ổn định.
- Backup tự động 1 tuần/lần.
- Hỗ trợ đa dạng hệ điều hành, trong đó có hệ điều hành Centos 7.
- Toàn quyền quản trị, giao diện đơn giản.
- Không giới hạn Data Transfer.
Đặc biệt, khi thuê VPS tại Vietnix, bạn sẽ được tặng bộ theme & plugin WordPress trị giá đến 50.000.000 VND.
Liên hệ ngay với Vietnix để được hỗ trợ tư vấn lựa chọn gói VPS phù hợp với bạn.
Bước 2: Cấu hình chuyển hướng trong Apache
Apache Web Server cung cấp hai module để giúp bạn có thể cấu hình chuyển hướng: mod_alias
và mod_rewrite
. Mod_rewrite
hoạt động mạnh mẽ hơn còn mod_alias
dễ hiểu và dễ sử dụng hơn. Nếu bạn cần chuyển hướng các request chứa chuỗi truy vấn hoặc tiêu đề HTTP cụ thể thì nên sử dụng mod_rewrite
.
Đối với trường hợp chuyển hướng các yêu cầu của www.my-website.vietnixhosting.net
đến my-website.vietnixhosting.net
thì mod_alias
sẽ làm được tốt. Apache khuyến khích chọn mod_alias
khi có thể. Việc chọn mod_rewrite
khi không cần thiết dẫn đến cấu hình bị rối, dễ bị hỏng và khó bảo trì.
Module alias mặc định được kích hoạt trên CentOS 7. Để kiểm tra lại xem module đã được kích hoạt chưa bạn hãy chạy lệnh này:
httpd -M | grep alias_module
Nếu xuất hiện alias_module (shared)
trong output thì tức là module đã được bật sẵn. Nếu module chưa được bật, bạn hãy thêm dòng sau vào /etc/httpd/conf.modules.d/00-base.conf
:
echo “LoadModule alias_module modules/mod_alias.so” | sudo tee -a /etc/httpd/conf.modules.d/00-base.conf
Khi mod_alias
đã được bật, bạn có thể sử dụng các chỉ thị Redirect
, RedirectMatch
và các chỉ thị khác được liệt kê ở mod_alias
docs trong cấu hình Apache.
Tiếp theo, bạn hãy cấu hình VirtualHost
s.
Trong bước chuẩn bị, bạn đã cấu hình website của mình trong Apache. Trang web thể được cấu hình trong file cấu hình chính của Apache (/etc/httpd/conf/httpd.conf
) hoặc file riêng (ví dụ: /etc/httpd/conf.d/
). Bạn hãy mở file đó trong trình soạn thảo my-website.vietnixhosting.net
.confvi
hoặc bất cứ trình soạn sảo nào. Nếu muốn sử dụng nano, bạn có thể cài đặt bằng lệnh yum install nano
:
sudo vi /etc/httpd/conf/httpd.conf
Hãy tìm kiếm các chỉ thị ServerAlias
được đặt trong VirtualHost
. Nếu bạn tìm thấy một dòng có ServerAlias
được đặt thành www.my-website.vietnixhosting.net
thì hãy xóa dòng đó. Nếu dòng đó chứa nhiều alias trong danh sách được phân tách bằng dấu phẩy thì chỉ xóa
khỏi danh sách. Cần xóa bỏ alias này vì bạn sẽ tạo một my-website.vietnixhosting.net
VirtualHost
riêng biệt phân miền chỉ chứa ServerName
và Redirect
. VirtualHost
chính cho trang web sẽ không còn phục vụ yêu cầu cho
.www.my-website.vietnixhosting.net
Bây giờ hãy tạo VirtualHost
trong một file (ví dụ: /etc/httpd/conf.d/
):www.my-website.vietnixhosting.net
.conf
sudo vi /etc/httpd/conf.d/www.my-website.vietnixhosting.net.conf
Dán nội dung bên dưới vào file, thay
bằng tên miền của bạn:www.my-website.vietnixhosting.net
<VirtualHost *:80>
ServerName www.my-website.vietnixhosting.net
Redirect permanent / http://www.my-website.vietnixhosting.net/
</VirtualHost>
Lưu và thoát file sau khi hoàn tất. Nếu bạn đã tạo file này trong /etc/httpd/sites-available
, hãy tạo một symlink đến file đó trong /etc/httpd/sites-enabled/
:
sudo ln -s /etc/httpd/sites-available/www.my-website.vietnixhosting.net.conf /etc/httpd/sites-enabled/
VirtualHost
mới này cấu hình Apache gửi một chuyển hướng 301 cho máy khách nào yêu cầu
và chỉ định họ truy cập thay thế vào www.my-website.vietnixhosting.net
. Mọi yêu cầu đến www.my-website.vietnixhosting.net
http://
sẽ được chuyển hướng đến www.my-website.vietnixhosting.net
/login.phphttp://my-website.vietnixhosting.net/login.php
.
Lưu ý: Nếu ServerAlias
của VirtualHost
chính của trang web chứa một subdomain đại diện – *.
. Bạn nên xem xét loại bỏ subdomain đó và tạo một my-website.vietnixhosting.net
VirtualHost
mới giống như VirtualHost
bạn vừa tạo cho mỗi subdomain bạn muốn chuyển hướng.
Nếu bạn không muốn chuyển hướng tất cả các subdomain và cần một số subdomain được phục vụ bởi VirtualHost chính. Bạn nên chỉ định tên cụ thể của mỗi subdomain là một alias. Đặc biệt, bây giờ bạn có một subdomain và yêu cầu của nó không được phục vụ bởi VirtualHost
chính. Bạn có thể đặt tên cho mỗi subdomain trên một dòng ServerAlias
riêng hoặc đặt tên cho tất cả chúng trên một dòng ServerAlias
. Các tên được phân tách bằng dấu phẩy.
Nếu phải giữ lại ServerAlias
cho *.my-website.vietnixhosting.net
, bạn cần đảm bảo Apache tải VirtualHost
www mới trước VirtualHost
chính. Apache sẽ sử dụng VirtualHost
chính được tải trước để xử lý các yêu cầu cho www.my-website.vietnixhosting.net
vì tên này phù hợp với alias đại diện. Chạy lệnh sau để xem VirtualHost
nào sẽ được tải trước khi bạn khởi động lại Apache:
httpd -S
Tìm các dòng chứa namevhost
my-website.vietnixhosting.net
và namevhost
www.my-website.vietnixhosting.net
. Nếu dòng www xuất hiện trước thì có nghĩa là VirtualHost
chính được tải trước. Tuy nhiên, nếu VirtualHost
cho domain gốc xuất hiện trước, có một số cách sau để Apache tải VirtualHost www trước:
- Nếu
VirtualHost
chính của bạn được chứa trong file (ví dụ:/etc/httpd/conf/httpd.conf
), hãy sử dụngInclude
hoặcIncludeOptional
để inlude thư mục chứaVirtualHost
www mới của bạn. Bạn chỉ cần di chuyển dòngInclude
đó lên trên VirtualHost chính trong file. - Nếu
VirtualHost
chính vàVirtualHost
www mới của bạn được chứa trong cùng một thư mục (ví dụ:/etc/httpd/conf.d/
). Bạn có thể buộc Apache tảiVirtualHost
www trước bằng cách đổi tên các file và đặt một số đứng trước tên file. Thêm tiền tố01-
vào tên file củaVirtualHost
www (ví dụ:/etc/httpd/conf.d/01-www.my-website.vietnixhosting.net.conf
) và02-
vào tên file củaVirtualHost
chính (ví dụ:/etc/httpd/conf.d/02-my-website.vietnixhosting.net.conf
).
Chạy httpd -S
một lần nữa để đảm bảo Virtualhost
www xuất hiện đầu tiên.
Khi đã sẵn sàng, bạn hãy khởi động lại Apache:
sudo systemctl restart httpd
Trước khi truy cập vào www.my-website.vietnixhosting.net
trên trình duyệt, bạn hãy thực hiện một request bằng curl
trên máy chủ hoặc máy của bạn (nếu đã cài đặt curl
):
curl -IL http://www.my-website.com
Tùy chọn -I
cho biết curl
chỉ hiển thị phần header trong phản hồi từ máy chủ. Tùy chọn -L
cho biết curl
thực theo chuyển hướng từ máy chủ bằng cách tự động thực hiện yêu cầu thứ hai. Lần này chuyển hướng đến URL được cung cấp trong phần Location
header (giống như trình duyệt web). Vì bạn đã cấu hình chuyển hướng 301, curl
sẽ thực hiện hai yêu cầu và bạn sẽ chỉ nhìn thấy phần header của hai phản hồi:
Output
HTTP/1.1 301 Moved Permanently
Date: Tue, 03 Jan 2023 19:24:44 GMT
Server: Apache/2.4.53
Location: http://my-website.vietnixhosting.net/
Content-Type: text/html; charset=iso-8859-1
HTTP/1.1 200 OK
Date: Tue, 03 Jan 2023 19:24:44 GMT
Server: Apache/2.4.53
Last-Modified: Thu, 01 Dec 2022 22:10:57 GMT
ETag: "39-5eecb7ed6bfc9"
Accept-Ranges: bytes
Content-Length: 57
Content-Type: text/html; charset=UTF-8
Trong phản hồi 301 (Moved Permanently) theo yêu cầu ban đầu cho http://www.my-website.vietnixhosting.net
và trong header gần cuối cùng có thông tin Location: http://my-website.vietnixhosting.net
. Phản hồi thứ hai từ request theo sau curl. Nếu trang web đang hoạt động tốt, máy chủ sẽ phản hồi với mã trạng thái 200 (OK) để cho biết yêu cầu đã được xử lý thành công.
Cuối cùng, truy cập vào http://www.my-website.vietnixhosting.net
trên trình duyệt web của bạn. Trang web của bạn sẽ xuất hiện như thường lệ. Nhưng trong thanh địa chỉ, phần “www” đã bị thiếu khỏi URL. Hầu hết người dùng sẽ không bao giờ để ý phần này. Vì vậy người dùng sẽ có cùng trải nghiệm như nếu họ yêu cầu http://my-website.vietnixhosting.net
.
Vietnix là một trong những nhà cung cấp dịch vụ tên miền, hosting, VPS tốc độ cao uy tín top đầu tại Việt Nam. Được thành lập từ năm 2012, Vietnix đã và đang đồng hành cùng 50.000+ khách hàng trong lẫn ngoài nước như iVIVU.com, Vietnamwork, UBGroup, KINGFOOD, GTV,.. với các dịch vụ chất lượng cao và chi phí hợp lý.
Luôn nỗ lực không ngừng nghỉ để mang đến cho khách hàng những dịch vụ tốc độ cao và ổn định, Vietnix đã được vinh danh bởi giải thưởng Thương hiệu Việt Nam xuất sắc 2022, hạng mục Sản phẩm dịch vụ xuất sắc.
Nếu bạn đang cần tìm một địa chỉ cung cấp dịch vụ hosting, VPS tốc độ cao và uy tín, Vietnix là một sự lựa chọn đáng cân nhắc. Bạn có thể liên hệ trực tiếp với Vietnix để được tư vấn và hỗ trợ chi tiết.
Thông tin liên hệ của Vietnix như sau:
- Địa chỉ: 265 Hồng Lạc, Phường 10, Quận Tân Bình, Thành Phố Hồ Chí Minh
- Hotline: 1800 1093 – 07 088 44444
- Email: sales@vietnix.com.vn
Lời kết
Trong bài viết về cách chuyển hướng www đến Non-www với Apache trên Centos 7 này, bạn đã biết cách thêm hai bản ghi DNS cho trang web của mình và cấu hình Apache để chuyển hướng một tên miền phụ đến tên miền ưu tiên của bạn. Bây giờ trang web của bạn có thể truy cập được thông qua cả hai tên miền. Hy vọng thông qua bài viết, trang web của bạn sẽ tiếp cận được nhiều người dùng và được nâng cao thứ hạng trong kết quả tìm kiếm.