Sửa lỗi khi triển khai code sử dụng framework CodeIgniter trên IIS

Nếu bạn đang có sẵn máy chủ windows và để tiết kiệm chi phí không mua thêm hosting, server Linux thì có thể triển khai tạm thời trên máy chủ windows dùng IIS. Tuy nhiên sẽ dính một số lỗi đặc biệt về Url writing khi triển khai PHP với framework CodeIgniter. Các lỗi phổ biến khi chạy lần đầu sẽ là lỗi 500, 404. Vậy cách khắc phục ra sao?

Với các máy chủ web trên Linux thì thường sẽ dựa vào tập tin .htaccess để đọc các thông tin cấu hình web cần thiết. Tuy nhiên IIS đọc ở 1 tập tin khác là web.config, và tập tin đó chỉ cần sửa lại nội dung như sau:

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
	<system.webServer>
		<rewrite>
			<rules>
				<rule name="Imported Rule 1" stopProcessing="true">
					<match url="^(.*)$" ignoreCase="false" />
					<conditions logicalGrouping="MatchAll">
						<add input="{URL}" pattern="^system.*" ignoreCase="false" />
					</conditions>
					<action type="Rewrite" url="/index.php?{R:1}" />
				</rule>
				<rule name="Imported Rule 2" stopProcessing="true">
					<match url="^(.*)$" ignoreCase="false" />
					<conditions logicalGrouping="MatchAll">
						<add input="{REQUEST_FILENAME}" matchType="IsFile" ignoreCase="false" negate="true" />
						<add input="{REQUEST_FILENAME}" matchType="IsDirectory" ignoreCase="false" negate="true" />
						<add input="{R:1}" pattern="^(index\.php|images|robots\.txt|css)" ignoreCase="false" negate="true" />
					</conditions>
					<action type="Rewrite" url="index.php?{R:1}" />
				</rule>
			</rules>
		</rewrite>
	</system.webServer>
</configuration>

Mình đã thử nghiệm trên máy chủ Windows Server 2008 R2, IIS 7.5 và CodeIgniter 3.x chạy rất ổn định ngay cả với cấu hình bỏ index.php trên Url.

Leave a Reply

Your email address will not be published. Required fields are marked *