
Để cài IIS hiểu các quy tắc cấu hình rewrite url từ các router ảo do cơ chế các framework php (Laravel, CodeIgniter,…) tạo ra cần đảm bảo các điều sau:
1. Đảm bảo URL REWRITE đã cài trên IIS

Nếu chưa cài URL Rewrite thì bạn hãy tải bản cài đặt từ link sau: https://www.iis.net/downloads/microsoft/url-rewrite. Rồi bấm vào file cài đặt vừa tải về để cài đặt.
Sau khi cài xong, hãy mở lại IIS và kiểm tra xem URL Rewrite xuất hiện như trong hình 1 là được.
2. Cài đặt IIS tổng cho phép override với cấu hình thấp hơn (Ứng dụng của bạn)
Để thực hiện cho phép này, cần thực hiện như sau:
- Mở file ApplicationHost.config (File cấu hình tổng của IIS) ở đường dẫn sau:
C:\Windows\System32\inetsrv\config\applicationHost.config
* Lưu ý: Mở bằng notepad hoặc notepad++ hoặc trình editor nào thì cũng cần mở bằng quyền Administrator.
- Sau đó tìm tất cả các session sau rồi sửa từ Deny thành Allow như bên dưới:
<section name="rewrite" overrideModeDefault="Allow" /> <section name="handlers" overrideModeDefault="Allow" /> <section name="modules" overrideModeDefault="Allow" />
- Cuối cùng khởi động lại dịch vụ IIS bằng lệnh:
iisreset
3. Cấu hình các quy tắc rewrite bằng file web.config
Tạo file web.config với nội dung như sau để IIS hiểu đường dẫn ảo trên URL không phải là đường dẫn vật lý và chuyển về index.php của các framework xử lý với router của riêng nó.
<?xml version="1.0" encoding="UTF-8"?> <configuration> <system.webServer> <rewrite> <rules> <rule name="Rewrite to index.php" stopProcessing="true"> <match url="^(.*)$" /> <conditions logicalGrouping="MatchAll"> <!-- Nếu không phải file thật --> <add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" /> <!-- Nếu không phải thư mục thật --> <add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" /> </conditions> <!-- Gửi mọi request về index.php --> <action type="Rewrite" url="index.php/{R:1}" appendQueryString="true" /> </rule> </rules> </rewrite> <!-- Loại bỏ WebDAV để không chặn verb --> <modules> <remove name="WebDAVModule"/> </modules> <handlers> <remove name="WebDAV"/> </handlers> </system.webServer> </configuration>
Lưu ý: Đặt file web.config này nằm ở thư mục góc của ứng dụng web.
4. Cấu hình để host (site) web của bạn hiểu index.php là file mặc định chạy đầu tiên
Để cấu hình này, chúng ta vào Default Document của site như hình 2.

Đảm bảo index.php được ưu tiên số 1 trong các định dạng, bạn kiểm tra nếu đã có thì đẩy nó lên vị trí số 1, nếu chưa có thì thêm (Xem hình 3)

Cuối cùng khởi động lại dịch vụ IIS và kiểm tra ứng dụng của bạn.
iisreset
Hy vọng hữu ích với bạn!
Nosomovo