regex - Web.config 在某些情况下重写规则,否则保持原样
问题描述
有人可以帮我写重写规则,基本上会这样说:
如果 URL 中包含“siteA”,但只有在继续使用“wp-admin、wp-content 或 wp-includes”时才删除“siteA”。在所有其他情况下,请在 URL 中保留“siteA”。
例如
domain.com/siteA/hello ->仍然是domain.com/siteA/hello
domain.com/siteA/wp-admin/some.css ->重写为domain.com/wp-admin/some.css
domain.com/siteA/wp-content/some.css ->重写为domain.com/wp-content/some.css
domain.com/siteA/wp-includes/some.css ->重写为domain.com/wp-includes/some.css
我尝试了几个选项,但我显然不擅长正则表达式和 url 重写;其中一项尝试:
<rule name="Custom: remove subsite from resources paths">
<match url="^siteA/(wp-(content|admin|includes).*)"/>
<action type="Rewrite" url="{R:1}"/>
</rule>
也试过
<rule name="Custom: remove subsite from resources paths">
<match url="^siteA/(wp-(content|admin|includes))/(*)"/>
<action type="Rewrite" url="{R:2}{R:3}"/>
</rule>
并且
<rule name="Custom: remove subsite from resources paths">
<match url="^siteA/(wp-(content|admin|includes).*)"/>
<action type="Rewrite" url="{R:2}{R:3}"/>
</rule>
这是我的完整规则节点(由于多站点而由 Wordpress 生成)。
所以事情是,它产生
domain.com/siteA/wp-includes/some.css
代替
domain.com/wp-includes/some.css
因此,当涉及到 wp-includes 等时,我需要丢失“siteA”。在其他情况下(定期发布 domain.com/siteA/regularPost )应该保持原样。
<rewrite>
<rules>
<rule name="WordPress Rule 1" stopProcessing="true">
<match url="^index\.php$" ignoreCase="false" />
<action type="None" />
</rule>
<rule name="WordPress Rule 2" stopProcessing="true">
<match url="^([_0-9a-zA-Z-]+/)?wp-admin$" ignoreCase="false" />
<action type="Redirect" url="{R:1}wp-admin/" redirectType="Permanent" />
</rule>
<rule name="WordPress Rule 3" stopProcessing="true">
<match url="^" ignoreCase="false" />
<conditions logicalGrouping="MatchAny">
<add input="{REQUEST_FILENAME}" matchType="IsFile" ignoreCase="false" />
<add input="{REQUEST_FILENAME}" matchType="IsDirectory" ignoreCase="false" />
</conditions>
<action type="None" />
</rule>
<rule name="WordPress Rule 4" stopProcessing="true">
<match url="^([_0-9a-zA-Z-]+/)?(wp-(content|admin|includes).*)" ignoreCase="false" />
<action type="Rewrite" url="{R:1}" />
</rule>
<rule name="WordPress Rule 5" stopProcessing="true">
<match url="^([_0-9a-zA-Z-]+/)?([_0-9a-zA-Z-]+/)?(.*\.php)$" ignoreCase="false" />
<action type="Rewrite" url="{R:2}" />
</rule>
<rule name="WordPress Rule 6" stopProcessing="true">
<match url="." ignoreCase="false" />
<action type="Rewrite" url="index.php" />
</rule>
</rules>
</rewrite>
解决方案
推荐阅读
- javascript - 为什么没有立即显示 owl-carousel 中的分数分页?
- postgresql - 在 Postgres 中计算与最大值的比率
- python - 如何将显示层次关系的字典列表转换为树?
- python - How to use modulo and string correctly to translate a crypted sentence?
- twitter - 在图像中标记的用户(Twitter API)
- android - React Native 错误:构建 APK 时任务:app:bundleDebugJsAndAssets FAILED
- python - *Python* 使用函数参数在列表中重复列表的元素
- amazon-web-services - 使用 terraform 将 EC2 自己的 IP 添加为入站规则
- python-3.x - 如何找到音频文件的能量函数?
- r - Google 在 shinyapps.io 中阻止 SMTP 电子邮件