我有一个 Web 服务器,用于显示位于 IIS 默认网站中的维护页面,该页面从指向 IP 地址的任何 URL 加载根目录中的网页。 这里有几个不同的 URL。
我需要重写或重定向,因此如果域名后面的 URL 中有更多内容(例如 http://a.domain.com/1 或 /1/2/...),它仍然会加载主内容默认网站根目录中的页面。
我当前的规则可以加载任何 URL 输入的网页,但它不会加载图形,因为我认为它卡在重写规则中,只显示文本,而不显示背景图像。 如果我禁用该规则,则页面将加载图形。
` <rewrite>
<rules>
<rule name="Rewrite to Root Webpage" enabled="true">
<match url="^(?!\/$).*" />
<action type="Rewrite" url="/" appendQueryString="true" />
<conditions>
</conditions>
</rule>
</rules>
</rewrite>`
` <!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Maintenance Mode</title>
<style>
body {
font-family: Arial, sans-serif;
margin: 0;
padding: 0;
height: 100vh;
display: flex;
align-items: center;
justify-content: center;
background-image: url("Down-Background.png");
background-repeat: no-repeat;
background-size: cover;
background-attachment: fixed;
color: white;
text-align: center;
}
.container {
background: rgba(0, 0, 0, 0.5);
padding: 40px;
border-radius: 10px;
max-width: 600px;
width: 100%;
}
h1 {
font-size: 2.5rem;
margin-bottom: 20px;
}
p {
font-size: 1.2rem;
margin-bottom: 20px;
}
.footer {
font-size: 1rem;
color: #ccc;
}
</style>
</head>
<body>
<div class="container">
<h1>We’re busy pushing improvements to give you a flawless user experience</h1>
<p>We’ll be back soon!</p>
<div class="footer">Thank you for your patience.</div>
</div>
</body>
</html>`
尝试添加以下条件,您应该能够解决问题,如下所示:
<rule name="Rewrite to Root Webpage" stopProcessing="true">
<match url="^(?!\/$).*" />
<conditions logicalGrouping="MatchAll" trackAllCaptures="false">
<add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" />
<add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
</conditions>
<action type="Rewrite" url="/" appendQueryString="true" />
</rule>
通过确定请求是文件还是目录路径来过滤请求,以防止它们触发此规则。