我们目前使用相当垃圾的正则表达式(显然)来匹配用户名后的网址,将其重写为个人资料页面。
<rule name="Profiles" stopProcessing="true">
<match url="(?:\w|[-_.])+" ignoreCase="false" />
<conditions logicalGrouping="MatchAll" trackAllCaptures="false">
<add input="{DOCUMENT_ROOT}/{R:0}" matchType="IsFile" negate="true" />
<add input="{DOCUMENT_ROOT}/{R:0}.php" matchType="IsFile" negate="true" />
<add input="{DOCUMENT_ROOT}/{R:0}" matchType="IsDirectory" negate="true" />
</conditions>
<action type="Rewrite" url="/profile.php?username={R:0}" appendQueryString="true" />
</rule>
我刚刚意识到这种匹配方式超出了要求,而且破损的图片/网址也试图加载个人资料页面。
我正在使用匹配的正则表达式。
/myusername
/myusername/
允许字母数字和下划线,但不允许任何额外的斜线......
E.g。 /qweqwe/qweqwe
会失败。