c# - web.config - 忽略特定文件夹的重写
问题描述
根是 WordPress 网站。我需要忽略文件夹“app”的 URL 重写,因为我在该文件夹上托管了一个虚拟目录 .NET App。
http://www.mywebsite.com/app
web.config 中的 URL 重写规则部分起作用。如果 URL 链接到 .NET 应用程序中的静态文件或文件夹,则它可以工作。如果 URL 链接到路由 url,则失败。怎么修?
例如这个网址:
mywebsite.com/app/Login
应该被路由到
mywebsite.com/app/Login.aspx
但是,它被 WordPress 捕获并显示 404 not found 错误。
如果 URL 是这样输入的,那么它运行正常:
mywebsite.com/app/Login.aspx
这是根站点 (wordpress) 上的 web.config
<rule name="WordPress: http://www.mywebsite.com" patternSyntax="Wildcard">
<match url="*"/>
<conditions>
<add input="{R:0}" pattern="^/app" negate="true" />
<add input="{R:0}" pattern="^/app/(.*)$" negate="true" />
<add input="{R:0}" pattern="^app/(.*)$" negate="true" />
<add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true"/>
<add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true"/>
</conditions>
<action type="Rewrite" url="index.php"/>
</rule>
这是 .NET 应用程序中 URL 路由的代码
public class Global : System.Web.HttpApplication
{
protected void Application_Start(object sender, EventArgs e)
{
RouteTable.Routes.MapPageRoute("login", "login", "~/login.aspx");
}
}
解决方案
我设法通过使用这条线解决了这个问题:
<add input="{HTTP_URL}" pattern="*/app" negate="true"/>
Microsoft有一个很好的参考资料,详细解释了这些规则的工作原理。
推荐阅读
- php - 如何通过 $_GET['NameField'] 将 php 值插入 html 标签
- python - pyral deleteAttachment 从测试用例定义中删除附件不起作用
- php - 优点正在从 php 中的 GET 变量中剥离
- reactjs - 为什么“useState()”似乎不起作用?
- python - Spacy 模块名称是关键字
- node.js - NodeJS http-proxy 模块在连接到某些域时返回 SSL 错误
- php - 无法在 laravel 6 中加载图像
- asp.net-mvc - Linq 加入两个存储库 Asp.Net MVC
- julia - 如何在 DiscreteCallback 中的指定时间读取相应的值?
- php - 即使安慰证明相反,也让 PHP $resquest 为空