2009-06-22 65 views
5

Tôi thường làm việc với máy chủ Apache, vì vậy khi mod_rewrite được bật, tôi có thể tạo tệp htaccess và sử dụng viết lại URL.PHP, URL viết lại với htaccess và Microsoft IIS Url Rewriting

Dưới đây là tập tin htaccess của tôi:

RewriteEngine On 
RewriteCond %{REQUEST_FILENAME} -s [OR] 
RewriteCond %{REQUEST_FILENAME} -l [OR] 
RewriteCond %{REQUEST_FILENAME} -d 
RewriteRule ^.*$ - [NC,L] 
RewriteRule ^.*$ index.php [NC,L] 

Bây giờ tôi đã xây dựng trang web này có sử dụng URL này viết lại mô-đun nhưng tôi đã đến để biết rằng nó là một máy chủ Microsoft. Tôi có thể sử dụng tập tin htaccess của mình không? Có điều gì tôi cần phải thay đổi để làm cho nó hoạt động không? Làm cách nào tôi có thể biết liệu viết lại URL có được thiết lập trên máy chủ của Microsoft không?

Trả lời

5

Bạn có thể sử dụng cấu hình như trong Ionic's Isapi Rewrite Filter (IIRF).

IIRF là mã nguồn mở miễn phí.

+0

tốt để nghe có một phiên bản mã nguồn mở miễn phí – Andrew

+1

Chỉ cần nhìn vào điều này ngày hôm nay và tôi không thể chạy trình cài đặt trên Win2012, vì vậy nó * có thể * không hoạt động trên các hệ thống mới hơn. – JasonRShaver

4

Tệp .htaccess là một quy ước Apache để cung cấp quyền truy cập người dùng cuối vào cấu hình Apache, vì vậy bạn sẽ không thể sử dụng nó như là một thay thế thả trên máy chủ IIS (Microsoft). Bạn sẽ có thể sử dụng nó nếu bạn đang chạy Apache trên Windows.

IIS7 có URL rewriting module cung cấp hỗ trợ ghi đè URL. Ngoài ra còn có các sản phẩm ISAPI_Rewrite mà làm tương tự cho các phiên bản trước của IIS. Bạn có thể cần một số cấp quyền quản trị trên máy chủ để sử dụng một trong các mô-đun này (ví dụ: không có cơ chế tương tự htaccess)

0

Bạn có thể sử dụng cấu hình ở trên như trong các sản phẩm ISAPI_Rewrite 3 hoặc Helicon Ape.

10

Nếu bạn sử dụng IIS 7 thì bạn có thể sử dụng mô-đun Rewrite URL IIS, có "Import Rules" feature có thể được sử dụng để dịch các quy tắc mod_rewrite sang định dạng viết lại URL IIS. Những quy tắc viết lại đặc biệt này sẽ không dịch vì RewriteCond sử dụng cờ "-s" và "-l" để kiểm tra xem URL được yêu cầu có tương ứng với tệp có kích thước khác không hoặc liên kết tượng trưng trên hệ thống tệp. Nếu ứng dụng của bạn không sử dụng bất kỳ liên kết tượng trưng sau đó bạn có thể yên tâm thay thế những điều kiện này với:

RewriteCond %{REQUEST_FILENAME} -f [OR] 

và sau đó chuyển đổi các quy tắc bằng cách sử dụng IIS URL Rewrite UI. Điều đó sẽ dẫn đến các quy tắc sau:

<rewrite> 
    <rules> 
    <rule name="Imported Rule 1" stopProcessing="true"> 
     <match url="^.*$" /> 
     <conditions logicalGrouping="MatchAny"> 
     <add input="{REQUEST_FILENAME}" matchType="IsFile" /> 
     <add input="{REQUEST_FILENAME}" matchType="IsDirectory" /> 
     </conditions> 
     <action type="None" /> 
    </rule> 
    <rule name="Imported Rule 2" stopProcessing="true"> 
     <match url="^.*$" /> 
     <action type="Rewrite" url="index.php" /> 
    </rule> 
    </rules> 
</rewrite> 
Các vấn đề liên quan