ฉันมีการตั้งค่า URL Rewrite สำหรับ URL ที่สะอาดใน CMS และ web.config ของฉันมีลักษณะดังนี้:
<?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>
โดยทั่วไปจะเปลี่ยนindex.php?id=something
เป็นsomething
URL ที่สะอาด ง่ายมากและใช้งานได้ดี
ตามปกติใน CMSs เพื่อป้องกันไม่ให้แบ็คเอนด์แตกหักแต่ละไดเรกทอรีย่อยต้องการอย่างใดอย่างหนึ่ง<remove name="Clean URLs" />
หรือ<clear />
ใน web.config เพื่อให้กฎไม่ได้รับการสืบทอด
มีวิธีการระบุในกฎหลักที่ไม่ควรสืบทอดโดยลูกของมันเลยโดย จำกัด ขอบเขตของกฎไปยังไดเรกทอรีปัจจุบันเท่านั้นหรือไม่ สิ่งที่ต้องการ<rule name="Clean URLs" stopProcessing="true" inherit="no">
จะเป็นมหากาพย์