2008-11-18 40 views
49

Đối với trang web IIS của tôi, tôi muốn chuyển hướng TẤT CẢ các yêu cầu đến MỘT trang. Mục đích của việc này là tôi muốn thực hiện một số bảo trì trên cơ sở dữ liệu (lấy nó off-line) mà tất cả các ứng dụng web của tôi sử dụng. Tôi có khoảng 50 ứng dụng web chạy trên trang web này, vì vậy tôi muốn tránh truy cập mỗi ứng dụng web để thay đổi điều gì đó. Tôi nghĩ tôi có thể thực hiện một thay đổi duy nhất trong machine.config? Bất kỳ gợi ý sẽ được đánh giá cao.IIS: Chuyển hướng TẤT CẢ các yêu cầu đến một trang?

Trả lời

10

Làm cho tất cả các trang không khả dụng, có thể dừng trang web hiện tại và tạo toàn bộ trang web mới hoàn toàn trống tại vị trí của trang. Sau đó, hãy tạo một trang lỗi tùy chỉnh cho lỗi 404 (tệp được tìm thấy). Lỗi tùy chỉnh là một tab trên hộp thoại thuộc tính của trang web trong IIS. Chỉ cần tạo trang bạn muốn gửi, sau đó thay đổi mục nhập cho 404 trên tab lỗi tùy chỉnh để trỏ đến tệp mới mà bạn vừa tạo.

+0

Đây là một gợi ý tuyệt vời và đã làm việc cho các ứng dụng .NET/classic ASP của tôi. Rất dễ thực hiện. – Mike

+1

Có một vấn đề lớn với điều này, mặc dù về mặt thẩm mỹ giao diện người dùng sẽ hoạt động, nếu bạn tình cờ có Công cụ tìm kiếm thu thập dữ liệu trang web của bạn, tất cả sẽ đột nhiên nhận được một loạt 404 và xóa nội dung khỏi kết quả tìm kiếm. – Talon

80

Nếu bạn đang sử dụng ASP.NET 2.0 (hoặc cao hơn), bạn có thể thả trang app_offline.htm vào thư mục gốc.

More info here.

+0

Thật tuyệt, tôi không biết điều đó. Mặc dù các trang web của chúng tôi tại nơi làm việc là sự kết hợp giữa các trang aspx và htm nên nó sẽ không hoạt động đối với chúng tôi. – pipTheGeek

+0

Tốt, tôi cũng không biết điều này. –

+0

Tôi đã tìm hiểu về app_offline.htm đọc blog của Scott Gu, nhưng tôi ngạc nhiên là tôi chưa đọc về nó ở nơi khác. Nó hoạt động như quảng cáo, giúp. –

36

trong webconfig

<rewrite> 
     <rules> 
      <rule name="redirect all requests" stopProcessing="true"> 
       <match url="^(.*)$" ignoreCase="false" /> 
       <conditions logicalGrouping="MatchAll"> 
        <add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" pattern="" ignoreCase="false" /> 
       </conditions> 
       <action type="Rewrite" url="index.php" appendQueryString="true" /> 
      </rule> 
     </rules> 
    </rewrite> 
+6

Tặng +1 đó là một giải pháp thay thế (đã xảy ra với tôi), tuy nhiên cần phải chỉ ra rằng viết lại không giống như chuyển hướng, vì vậy nếu cần có chuyển hướng thực thì điều này sẽ không hoạt động. – Davy8

+3

Nếu bạn cần chuyển hướng, bạn sẽ chỉ phải thay đổi 'action type' thành' Redirect'. – rcdmk

+3

Quy tắc ghi đè này sẽ chỉ chuyển hướng các yêu cầu đến các thư mục, chứ không phải các tệp. OP muốn chuyển hướng * tất cả * yêu cầu. Để thực hiện điều đó, hãy xóa thẻ ''. – Keith

1

bạn có thể tạo ra một trang web mới trong IIS với một ràng buộc đến cổng 80 với một host-header trống (giống như các trang web mặc định) và sau đó dừng các trang web khác (s)? Bằng cách đó tất cả các yêu cầu sẽ được xử lý bởi trang web mới, có thể chỉ đơn giản là một trang HTML tĩnh thông báo cho người dùng rằng trang web ngừng hoạt động để bảo trì.

Các vấn đề liên quan