Hướng dẫn kích hoạt mod_rewrite Apache trên CentOS và Ubuntu

Kích hoạt mod_rewrite Apache – Kích hoạt file .htaccess Apache. Chức năng rewrite URL của module mod_rewrite trên dịch vụ Apache được dùng để xử lý các URL request HTTP truy cập. Module này là một trong những module mặc định của Web Server Apache. Với module này người quản trị có thể quyết định đường dẫn URL của request HTTP sẽ được xử lý ra sao như : chuyển hướng truy cập, từ chối request, cung cấp file cụ thể,… Thường bạn sẽ dễ dàng gặp tình huống này khi bạn truy cập website với một URL cụ thể nhưng bị web server chuyển hướng sang nội dung trang khác theo nhu cầu của họ.

kích hoạt mod_rewrite apache

Trên hệ thống server web Apache, thì việc cấu hình các rule rewrite dùng để xử lý URL request HTTP nằm ở file .htaccess Apache (file .htaccess không hoạt động với Nginx Web server). Nên ở bài viết này chính là giúp bạn kích hoạt module mod_rewrite trên Apache để nội dung cấu hình rule trong file .htaccess hoạt động được.

1. Kích hoạt mod_rewrite Apache

Mặc định module mod_rewrite thường được kích hoạt sẵn trên dịch vụ Apache. Vậy đầu tiên ta cần kiểm tra xem module mod_rewrite được kích hoạt trên Apache hay chưa?

+ CentOS/RHEL

[default] # httpd -M | grep -i “rewrite”
rewrite_module (shared)
Syntax OK
[/default]

+ Ubuntu/Debian

[default] # apache2ctl -M | grep -i “rewrite”
rewrite_module (shared)
Syntax OK
[/default]

Nếu bạn thấy output lệnh httpd hoặc apache2ctl, với option ‘-M‘ là liệt kê các module đang được dịch vụ Apache load, có dòng ‘rewrite_module‘ tức là module mod_rewrite đã được Apache nạp lên bộ nhớ hệ thống để sử dụng rồi nhé.

Ơ thế giờ lỡ module không được Apache load thì sao ? Vậy thì mình sẽ cấu hình lại cho Apache load module rewrite thôi bằng các bước sau:

– Kiểm tra xem có thư viện module rewrite này sẵn trong thư mục chứa module của Apache hay không ? Nếu output ra kết quả ‘mod_rewrite.so‘ tức là có.

+ CentOS

[default] # ll /etc/httpd/modules/ | grep -i “rewrite”
64K -rwxr-xr-x 1 root root 64K Jul 12 20:33 mod_rewrite.so
[/default]

– Tiếp đến ta sẽ tiến hành cấu hình cho dịch vụ Apache load đích danh đường dẫn module mod_rewrite.so . Hãy edit file cấu hình chính của Apache  (đường dẫn mặc định) ‘/etc/httpd/conf/httpd.conf‘ và tìm dòng có nội dung ‘LoadModule ….‘, bạn sẽ thấy các module khác đang được load dựa vào chỉ thị cấu hình là ‘LoadModule‘. Nhìn cái keyword cấu hình ta cũng hiểu được rồi đúng không nào ?!

Cú pháp cấu hình ‘LoadModule’

LoadModule <ten_module> <duong_dan_module>.so

Chú thích:

  • ten_module : bạn phải chỉ định đúng tên module. Thường tên nó sẽ là viết ngược lại của tên module.so . ‘mod_rewrite‘ -> ‘rewrite_module‘.
  • duong_dan_module.so : bạn có thể chỉ định đường dẫn tuyệt đối, hoặc đường dẫn tương đối ở thư mục ./modules/ của thư mục cấu hình Apache.
# vi /etc/httpd/conf/httpd.conf

..
LoadModule disk_cache_module modules/mod_disk_cache.so
LoadModule cgi_module modules/mod_cgi.so
LoadModule version_module modules/mod_version.so

LoadModule rewrite_module module
..

– Sau đó ta save lại và tiến hành cho khởi động lại dịch vụ Apache. Kiểm tra lại nội dung list module như trên xem Apache đã load module mod_rewrite hay chưa nhé ?

+ CentOS 7

[default] # systemctl restart httpd
[/default]

+ CentOS 6

[default] # service httpd restart
[/default]

+ Ubuntu 14.04

[default] # service apache2 restart
[/default]

+ Ubuntu 16.04

[default] # systemctl restart apache2
[/default]

2. Kích hoạt tính năng mod_rewrite cho file .htacces

Một khi mod_rewrite module đã được kích hoạt trên Web Server Apache, bạn tiếp tục kích hoạt chức năng URL rewrite trong các nội dung cấu hình của file .htaccess tại từng thư mục chứa source code vhost. File .htaccess cho phép bạn cấu hình các rule cho phép thay đổi nội dung đường URL mà không cần truy cập cấu hình server. Chính vì vậy mà file .htaccess khá quan trọng đối với web server và thường được sử dụng rất nhiều để chuyển tiếp các nội dung URL Web.

Ví dụ dưới đây là ta kích hoạt chức năng rewrite trong file .htaceess cho thư mục document root (/var/www/html/) mặc định của dịch vụ Apache. Nếu bạn cần kích hoạt cho các Vhost khác thì bạn cần chỉ định riêng ra cho nội dung của các Vhost đó.

Giờ ta cần edit file ‘/etc/httpd/conf/httpd.conf‘ và tìm dòng section cấu hình ‘<Directory /var/www/html>‘ . Chuyển giá trị ‘AllowOverride None‘ thành ‘AllowOverride All‘.

# vi /etc/httpd/conf/httpd.conf

<Directory /var/www/html>
AllowOverride All
</Directory>

Nếu bạn kích hoạt mod_rewrite Apache cho từng vhost cụ thể thì có thể tham khảo sau.

<VirtualHost 192.168.100.1:80>
    ServerName cuongquach.com
    ServerAlias www.cuongquach.com
    ServerAdmin admin@cuongquach.com
    DocumentRoot /home/cuongquach/public_html/
    <Directory /home/cuongquach/public_html >
        Options FollowSymLinks
        AllowOverride All
    </Directory>
    ...

</VirtualHost>

Sau cùng thì bạn chỉ cần khởi động lại dịch vụ web Apache để chạy cấu hình mới. Như vậy bạn đã biết cách để kích hoạt mod_rewrite trên Apache Web Server (tương đương kích hoạt file .htaccess trên Apache) rồi phải không nào. Nếu có khó khăn gì đừng ngại comment bên dưới với Cuongquach.com nhé.

Nguồn: cuongquach.com
Tác giả: Quách Chí Cường

Previous articleEbook Troubleshooting CentOS PDF
Next articleTài liệu lập trình Java Tiếng Việt Căn Bản Tổng Hợp
Bạn đang theo dõi website "https://cuongquach.com/" nơi lưu trữ những kiến thức tổng hợp và chia sẻ cá nhân về Quản Trị Hệ Thống Dịch Vụ & Mạng, được xây dựng lại dưới nền tảng kinh nghiệm của bản thân mình, Quách Chí Cường. Hy vọng bạn sẽ thích nơi này !