Cegah aturan penulisan ulang URL agar tidak diwarisi oleh subdirektori di IIS7


11

Saya memiliki pengaturan penulisan ulang URL untuk URL bersih dalam CMS dan web.config saya terlihat seperti ini:

<?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>

Itu pada dasarnya berubah index.php?id=somethingmenjadi somethinguntuk URL bersih. Sangat sederhana dan bekerja dengan baik.

Seperti biasa dalam CMS, untuk mencegah back-end dari melanggar, setiap subdirektori memerlukan salah satu <remove name="Clean URLs" />atau <clear />di web.config sehingga aturan tidak diwarisi.

Apakah ada cara untuk menentukan dalam aturan induk bahwa itu tidak boleh diwarisi oleh anak-anaknya sama sekali dengan entah bagaimana membatasi ruang lingkup aturan hanya pada direktori saat ini? Sesuatu seperti <rule name="Clean URLs" stopProcessing="true" inherit="no">akan menjadi epik.

Jawaban:



6

Saya baru-baru ini mengalami masalah ini, dalam situasi yang sama. Tetapi jawaban dari rjenkins tampaknya akan menyebabkan masalah dengan aplikasi virtual yang mengandalkan warisan pengaturan induk.

Jika Anda tahu nama aturan penulisan ulang, Anda bisa melakukan ini:

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

2
Itu adalah upaya pertama saya, tetapi Anda harus meletakkannya di web.config untuk setiap subdirektori dan itu tidak selalu praktis. Saya setuju ini lebih bersih, tetapi ini lebih banyak pekerjaan, terutama ketika mungkin ada penulisan ulang dalam subdirektori (misalnya contoh lain dari cms dalam subfolder)
Rich Jenks
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.