Tổng hợp chuyển hướng bằng .htaccess
Nếu bạn đang muốn chuyển hướng một, hoặc nhiều đường dẫn của website thì bài viết tổng hợp chuyển hướng bằng .htaccess này sẽ rất hữu ích đối với bạn.
Lưu ý: Nếu bạn đang sử dụng WordPress thì một số chuyển hướng sẽ không hoạt động vì mặc định WordPress sẽ sử dụng các nguyên tắc của riêng nó. Và giải pháp sử dụng WordPress đó là bạn nên sử dụng plugin Redirection.
I. Tệp tin .htaccess là gì?
.htaccess là một tệp cấu hình để sử dụng trên các Web Server có hỗ trợ như Apache, LiteSpeed, OpenLiteSpeed ..vv..
Khi tệp .htaccess được đặt trong một thư mục mã nguyồn website, thì tệp .htaccess sẽ được thực thi bởi Web server. Các tệp .htaccess này có thể được sử dụng để thay đổi cấu hình của phần mềm Web Server nhằm bật/tắt chức năng và tính năng bổ sung mà phần mềm Web Server cung cấp.
II. Tổng hợp chuyển hướng bằng .htaccess
Các ví dụ dưới đây có thể được thêm vào tệp .htaccess tùy theo nhu cầu của bạn. Chỉ cần đảm bảo điều chỉnh đường dẫn thực đến tệp để tệp .htaccess biết nó nằm ở đâu. Ngoài ra, nếu bạn thấy tên miền example.com , hãy thay đổi tên miền này thành tên miền của bạn.
1. Chuyển hướng tất cả các URL
Dòng cấu hình sau sẽ chuyển hướng tất cả các URL trên trang web hiện tại của bạn đến trang web mới.
Redirect 301 / https://example.com/
2. Chuyển hướng đến một URL
Sử dụng Redirect trong tệp .htaccess cho phép bạn chuyển hướng truy cập của người dùng từ trang cũ sang trang mới mà không cần phải giữ lại trang cũ.
Ví dụ: Nếu bạn sử dụng index.html
làm tệp chỉ mục của mình và sau đó đổi tên index.html
thành home.html
, bạn có thể thiết lập chuyển hướng để đưa người dùng từ index.html
đến home.html
với đoạn mã sau:
Redirect /path/to/old/file/index.html /path/to/new/file/home.html
Nếu bạn muốn chuyển hướng sang tệp home.html
của website khác thì dùng mã bên dưới:
Redirect /path/to/old/file/index.html https://www.example.com/new/file/home.html
3. Một số ví dụ về chuyển hướng bằng .htaccess
Chuyển hướng từ một thư mục sang một tệp HTML:
RedirectMatch 301 ^/blog/about /blog/about.html
Chuyển hướng tệp tin index.html
sang một thư mục khác:
Redirect /index.html /new/
Chuyển hướng từ tệp index.html
sang tệp default.html
:
Redirect /index.html /default.html
Chuyển hướng một thư mục nội bộ /private
riêng tư đến một thư mục /private
của trang web khác:
Redirect /private/ https://www.example.com/private/
Tải tệp .gif
từ một trang web khác:
Redirect /img/logo.gif https://www.example.com/images/logo.gif
Chuyển hướng thông báo lỗi 404 về lại trang chủ website:
ErrorDocument 404 https://example.com/
Chuyển hướng một thư mục cũ sang thư mục mới:
Điều này chuyển hướng các tệp trong thư mục cũ /blog/archives
đến một thư mục mới /archives
.
RewriteRule ^blog/archives/(.*)$ /newarchives/$1 [R=301,NC,L]
4. Chuyển hướng các trang không tồn tại đến index.php
Nếu khách truy cập cố gắng truy cập một trang không tồn tại, họ sẽ gặp lỗi 404. Thay vào đó, bạn có thể chuyển hướng bất kỳ yêu cầu nào đến một trang không tồn tại đến tệp index.php
của bạn (hoặc bất kỳ tệp index nào khác) bằng cách thêm mã sau vào .htaccess
của bạn:
Options +SymLinksIfOwnerMatch RewriteEngine On RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule . /index.php [L]
Nếu trang index của bạn không phải là index.php
mà là index.html hoặc trang khác, chỉ cần thay đổi dòng cuối cùng thành tệp index thực tế của bạn. Sau đó, khách truy cập được chuyển hướng trở lại trang chủ của bạn.
5. Chuyển hướng thư mục chính sang thư mục con:
Ví dụ này chuyển hướng URL của miền chính đến bất kỳ thư mục con nào. Trong ví dụ này, nó tự động tải example.com/subdir1
khi bạn nhập example.com
trên trình duyệt:
RewriteEngine on RewriteRule ^$ /subdir1/ [L]
6. Chuyển hướng sang www:
RewriteEngine On RewriteCond %{HTTP_HOST} ^example.com RewriteRule (.*) https://www.example.com/$1 [R=301,L]
7. Xóa www trong URL:
RewriteEngine On RewriteCond %{HTTP_HOST} ^www.example.com RewriteRule (.*) https://example.com/$1 [R=301,L]
8. Viết lại một URL sang một URL khác:
Ví dụ này viết lại một URL thành một URL khác. Điều này sẽ viết lại example.com/1.html
thành example.com/abc.php?id=1
.
Options +FollowSymLinks RewriteEngine On RewriteRule ^([0-9]+).html /abc.php?id=$1 [QSA,L]
9. Viết lại các liên kết không tồn tại về trang chủ:
Phần sau chuyển hướng tất cả các liên kết đến các tệp hoặc thư mục không tồn tại đến index.php
. Tuy nhiên, nếu tệp hoặc đường dẫn có tồn tại, nó sẽ truy cập được bình thường:
RewriteEngine On RewriteBase / RewriteRule ^index.php$ - [L] RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule . /index.php [L]
10. Chuyển hướng http sang https:
RewriteEngine on RewriteCond %{HTTPS} !=on [NC] RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUESTURI} [R=301,L]
III. Tổng kết
Hy vọng các ví dụ chuyển hướng bằng .htaccess này sẽ giúp các bạn xử lý được các vấn đề của mình. Chúc các bạn thực hiện thành công.
Xem thêm các bài viết hướng dẫn website hữu ích tại đường dẫn sau:
- Tổng hợp hướng dẫn sử dụng và tối ưu Website.
Nếu các bạn cần hỗ trợ các bạn có thể liên hệ bộ phận hỗ trợ theo các cách bên dưới:
- Hotline: 0569 395 495
- Email: support@partner.com.vn.