Việc cấu hình ảo sẽ rất có lợi ở chỗ bạn có thể trỏ tên miền về một localhost với url đẹp hơn rất nhiều. Mình sẽ ví dụ cho các bạn dễ hiểu hơn.
– Giả sử bạn phát triển 1 dự án và tạo trên Localhost, cách thông thường là mỗi dự án thì bạn tạo một thư mục riêng trong thư mục www hoặc bên trong 1 thư mục nào đó. Vd mình có 1 dự án mới tên là shopabc, đặt trong thư mục “www\projects\freelanceproj\”, thì để truy cập tới ứng dụng này trên localhost, bạn cần phải gõ đường dẫn trên trình duyệt là: http://localhost/projects/freelanceproj/shopabc/ <– đường dẫn ở localhost đến ứng dụng shopabc mà bạn đang phát triển. Đường dẫn dưới localhost này có một số khuyết điểm sau:
1.Mỗi lần type cũng dài và nhiều khi khó nhớ
2. Không hiển thị chân thật được kiến trúc URL đã định ban đầu cho website vì nó không phản ánh đúng domain name
3. Demo cho khách hàng với cái đường dẫn không ấn tượng lắm. Với 3 khuyết điểm trên, mình viết bài này để chia sẽ tới các bạn một cách giúp giải quyết các khuyết điểm trên để làm cho việc phát triển web “vui” hơn một tí. Mục đích của mình cụ thể bây giờ là mình sẽ gõ http://myshop.com vào thanh địa chỉ của trình duyệt, và nó sẽ load nội dung y chang với đường dẫn http://localhost/projects/freelanceproj/shopabc/ của localhost. Để làm việc này mình sẽ sử dụng cơ chế Virtual Host của Apache. Thôi không vòng vo nhiều nữa mình sẽ hướng dẫn các bước cấu hình domain ảo như sau:
1. Cấu hình tên miền ảo trong Xampp:
– Các bạn có thể tải XAMPP từ trang chủ: https://www.apachefriends.org .
– Giả sử bạn cài đặt ở ổ D:\ ta có thư mục D:\xampp. Sau khi tiến hành cài đặt xong các bạn mở file D:/xampp/apache/conf/httpd.conf và tìm đến dòng:
# Virtual hosts
# Include conf/extra/httpd-vhosts.conf
nếu thấy có dấu # ở đầu dòng thì xóa bỏ dấu # đi như dưới đây, còn không thì thôi:
# Virtual hosts
Include conf/extra/httpd-vhosts.conf
mục đích là để load config từ một file khác vào trong file httpd.conf, mà cụ thể là
D:/xampp/apache/conf/extra/httpd-vhosts.conf
Giờ các bạn mở tệp tin D:/xampp/apache/conf/extra/httpd-vhosts.conf copy đoạn code bên dưới và paste vào trong file httpd-vhosts.conf.
<VirtualHost *:80>
ServerAdmin admin@chungnguyen.xyz
DocumentRoot “D:/xampp/htdocs/laravel/public”
ServerName chungnguyen.local
ErrorLog “logs/chungnguyen.local-error.log”
CustomLog “logs/chungnguyen.local-access.log” common
<Directory “D:/xampp/htdocs/laravel/public”>
Options FollowSymLinks Indexes
AllowOverride All
DirectoryIndex index.php
Require all granted
Allow from all
</Directory>
</VirtualHost>
Mình sẽ giải thích 1 chút như sau:
- <VirtualHost *:80>: lắng nghe cổng 80 mặc định
- ServerAdmin admin@chungnguyen.xyz : khi có lỗi xảy ra, sẽ hiện thông báo gửi email về cho quản trị
- DocumentRoot “D:/xampp/htdocs/laravel/public”: thư mục chứa code website
- ServerName chungnguyen.local : đây chính là tên miền ảo
- ErrorLog “logs/chungnguyen.local-error.log” : error log
- CustomLog “logs/chungnguyen.local-access.log” common : access log
- <Directory></Directory> : Đây là cặp thẻ dùng để cấp quyền truy cập cho thư mục nếu thư mục không được cấp quyền sẽ gặp lỗi 403 khi các bạn cố gắng truy cập. Đường dẫn thư mục của bạn có thể là một regular expression. Nếu các bạn không rõ về Regex thì các bạn có thể dùng đường dẫn thư mục giống với khai báo trong DocumentRoot hoặc tham khảo thêm tại: http://httpd.apache.org/docs/2.4/en/mod/core.html#directory .
- Options FollowSymLinks : Option này cho phép bạn truy cập theo symbolic link (giống như shortcut trong windows vậy). Ngoài ra còn có nhiều các options khác, các bạn có thể tham khảo thêm tại: http://httpd.apache.org/docs/2.4/en/mod/core.html#options .
- AllowOverride All : cho phép bạn overwrite các config bằng file htaccess.
- DirectoryIndex index.php : Khi các bạn truy cập vào thư mục (không chỉ rõ cụ thể là file nào) thì file index.php sẽ được gọi.
- Require all granted : là cho phép tất cả các máy khác được truy cập vào thư mục đang được cấu hình. Chú ý: từ phiên bản 2.2 trở về trước thì Apache sử dụng Allow from all để thay thế cho Require all granted.
Các bạn khởi động lại Apache bằng cách là khởi động phần mềm XAMPP Control Panel dòng nếu dòng Apache đang running thì các bạn stop và start lại, còn nếu đang ở chế độ tắt rồi thì các bạn chỉ cần start là được. Ok vậy là bạn đã cấu hình xong về phần của Apache giờ chỉ việc đăng ký DNS cho domain của bạn nữa là mọi việc hoàn tất.
Các bạn vào thư mục %windir%/system32/drivers/etc, trong máy của mình là C:\Windows\System32\drivers\etc copy file hosts ra desktop. Sau đó mở file hosts ở ngoài desktop bằng editor như: notedpad, notepad++, sublime text, … thêm vào cuối file dòng sau:
127.0.0.1 chungnguyen.local
Lưu lại, và copy-paste ngược lại thư mục C:\Windows\System32\drivers\etc lúc nãy, chọn Yes nếu được hỏi quyền admin nhé. Khi các bạn gõ địa chỉ chungnguyen.local thì máy sẽ ưu tiên tìm địa chỉ IP của domain đó trong file hosts của hệ điều hành trước tiên.
Nếu không có thì nó sẽ đi tìm địa chỉ IP của domain này thông qua các DNS Server trên Internet. Vì bạn đã khai báo trong file hosts nên nó sẽ sử dụng địa chỉ IP được khai báo trong đó luôn. Ở đây địa chỉ IP 127.0.0.1 trỏ về chính máy đang truy cập (chính là máy của bạn – còn nếu cấu hình trên server thì đó chính là bản thân máy server luôn). Bạn có thể sử dụng dài IP từ 127.0.0.1 -> 127.255.225.254 đây là dải IP trỏ về máy của bạn ( Nguyên dải luôn chứ không phải chỉ là 127.0.0.1 nhé ).
Đã xong bây giờ các bạn mở trình duyệt và gõ http://chungnguyen.local là có thể vào được. Bạn có thể đổi địa chỉ url tùy ý chỉ cần nhớ là đã khai báo trong ServerName và file host là được).