使用 URL 重写重写对 IIS 10 根目录中网页的所有请求

问题描述 投票:0回答:1

我有一个 Web 服务器,用于显示位于 IIS 默认网站中的维护页面,该页面从指向 IP 地址的任何 URL 加载根目录中的网页。 这里有几个不同的 URL。

我需要重写或重定向,因此如果域名后面的 URL 中有更多内容(例如 http://a.domain.com/1 或 /1/2/...),它仍然会加载主内容默认网站根目录中的页面。

我当前的规则可以加载任何 URL 输入的网页,但它不会加载图形,因为我认为它卡在重写规则中,只显示文本,而不显示背景图像。 如果我禁用该规则,则页面将加载图形。

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>`
iis-10 url-rewrite-module
1个回答
0
投票

尝试添加以下条件,您应该能够解决问题,如下所示:

 <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>

通过确定请求是文件还是目录路径来过滤请求,以防止它们触发此规则。

© www.soinside.com 2019 - 2024. All rights reserved.