Ngăn chặn các quy tắc Viết lại URL được kế thừa bởi các thư mục con trong IIS7


11

Tôi có thiết lập Viết lại URL cho các URL sạch trong CMS và web.config của tôi trông như thế này:

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <system.webServer>
        <rewrite>
            <rules>
                <rule name="Clean URLs" stopProcessing="true">
                    <match url="^([^/]+)/?$" />
                    <conditions>
                        <add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
                        <add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" />
                    </conditions>
                    <action type="Rewrite" url="?id={R:1}" />
                </rule>
            </rules>
        </rewrite>
    </system.webServer>
</configuration>

Về cơ bản, nó biến index.php?id=somethingthành somethingcác URL sạch. Rất đơn giản và nó hoạt động tốt.

Như thường thấy trong các CMS, để ngăn chặn back-end bị phá vỡ, mỗi thư mục con yêu cầu <remove name="Clean URLs" />hoặc <clear />trong web.config của nó để quy tắc không được kế thừa.

Có cách nào để chỉ định trong quy tắc cha mẹ rằng nó không nên được thừa kế bởi con cái của nó bằng cách nào đó giới hạn phạm vi của quy tắc chỉ trong thư mục hiện tại? Một cái gì đó như <rule name="Clean URLs" stopProcessing="true" inherit="no">sẽ được sử thi.

Câu trả lời:



6

Gần đây tôi gặp vấn đề này, trong một tình huống tương tự. Nhưng câu trả lời từ rjenkins dường như sẽ gây ra vấn đề với các ứng dụng ảo dựa trên sự kế thừa của các cài đặt gốc.

Nếu bạn biết tên của quy tắc viết lại, bạn có thể làm điều này:

<rewrite>
  <rules>
    <remove name="RewriteNameToDisable" />
  </rules>
</rewrite>

2
Đó là nỗ lực đầu tiên của tôi, nhưng bạn phải đưa nó vào web.config cho mọi thư mục con và điều đó không phải lúc nào cũng thực tế. Tôi đồng ý rằng nó sạch hơn, nhưng nó hiệu quả hơn, đặc biệt là khi có thể viết lại trong các thư mục con (ví dụ: một ví dụ khác về cms trong thư mục con)
Rich Jenks
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.