2012-05-16 24 views
10

Tôi sử dụng IIS 7.5 và URL Rewrite.Ghi đè URL IIS 7.5 - Viết lại một thư mục từ một URL

Tôi có một trang web với hệ thống phân cấp tập tin theo cách này:

webroot 
webroot/LegacySite 

cả webroot và di sản được tách ra App-Folders trong IIS.


tôi cần phải viết lại các URL của tôi vậy:

Dưới Web.Conf hiện tại của tôi trong thư mục webroot, vào lúc này không hoạt động đúng cách, bạn có thể chỉ cho tôi những gì tôi đang thiếu không?

<?xml version="1.0" encoding="UTF-8"?> 
    <configuration> 
     <system.webServer> 
      <rewrite> 
       <rules> 
        <rule name="MyRole" stopProcessing="true"> 
         <match url=".*" /> 
         <conditions> 
          <add input="{HTTP_HOST}" pattern="^mysite.com" /> 
          <add input="{PATH_INFO}" pattern="^\LegacySite\" negate="true" /> 
         </conditions> 
         <action type="Rewrite" url="\LegacySite\{R:0}" /> 
        </rule> 
       </rules> 
      </rewrite> 
     </system.webServer> 
    </configuration> 

Trả lời

16

Sau đây nên làm việc:

<rule name="MyRole" stopProcessing="true"> 
    <match url="LegacySite/(.*)" /> 
    <conditions> 
     <add input="{HTTP_HOST}" pattern="^mysite.com$" /> 
    </conditions> 
    <action type="Rewrite" url="/{R:1}" appendQueryString="true" /> 
</rule> 

Bạn có thể muốn thả có điều kiện để kiểm tra tên máy chủ. Điều đó thực sự quan trọng phải không? Bạn có bất kỳ tên miền nào khác ràng buộc với trang web mà bạn không muốn chuyển hướng xảy ra không? Có vẻ như không cần thiết. Bạn có thể chỉ cần:

<rule name="MyRole" stopProcessing="true"> 
    <match url="LegacySite/(.*)" /> 
    <action type="Rewrite" url="/{R:1}" appendQueryString="true" /> 
</rule> 

Tôi đã thêm appendQueryString="true" để chuyển bất kỳ tham số chuỗi truy vấn tùy chọn nào tới URL được ghi đè.

+0

Cảm ơn Marco về câu trả lời của bạn – GibboK

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