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=something
thành something
cá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.