Dưới đây là những gì tôi đã triển khai:IIS Rewrite Module và phụ ứng dụng
testRedirect
là một trang web trống. Tất cả các ứng dụng con là các thư mục con đã được chuyển đổi trong ứng dụng. Tất cả chúng đều là các trang web ASP .Net MVC.
Dưới đây là những gì tôi muốn thiết lập:
Http://localhost/
phải thể hiện các nội dung củaSiteName1
mà không hiển thịHttp://localhost/SiteName1/
trong thanh địa chỉ (nó phải ởHttp://localhost/
)Http://localhost/SiteName1/
phải thể hiện các nội dung củaSiteName1
mà không hiển thịHttp://localhost/SiteName1/
trong thanh địa chỉ (nó phải ởHttp://localhost/
)Http://localhost/SiteName2/
cho thấy nội dung củaSiteName2
và mànHttp://localhost/SiteName2/
trong thanh địa chỉ (Tương tự hành vi choSiteName3
&SiteName4
và bất kỳ trang web khác ....)
Nói cách khác, tôi muốn của tôi SiteName1
để hoạt động như một nhà trang web
Những gì tôi đã cố gắng cho đến nay, là một cái gì đó tương tự như câu trả lời cung cấp bởi @cheesemacfly here:
<rules>
<rule name="Redirect if SiteName1" stopProcessing="true">
<match url="^SiteName1/(.*)$" />
<action type="Redirect" url="{R:1}" />
</rule>
<rule name="Rewrite to sub folder">
<match url="^.*$" />
<action type="Rewrite" url="SiteName1/{R:0}" />
</rule>
</rules>
Nó hoạt động tuyệt vời cho Trường hợp1 & 2 nhưng không phải là những người khác.
Tôi cố gắng để thêm các quy tắc như thế này, nhưng nó đã không thành công ...
<rule name="if_not_SiteName1" stopProcessing="true">
<match url="^SiteName1/(.*)$" negate="true" />
<action type="None" />
</rule>
Bạn có đang sử dụng bất kỳ hệ thống định tuyến nào không? Bởi vì nếu không, bạn có thể sử dụng điều kiện 'IsFile/IsDirectory' (vì vậy nếu đường dẫn được yêu cầu, hãy giả sử' http: // localhost/SiteName2/default.aspx' hoặc 'http: // localhost/SiteName2 /' , trỏ đến một tệp/thư mục thực, sau đó bạn không kích hoạt quy tắc). Nó có hoạt động trong trường hợp của bạn không? – cheesemacfly
@cheesemacfly Tôi sử dụng định tuyến, đây là các trang web ASP .Net MVC. Tôi đã cập nhật câu hỏi của mình. – MaxSC