如何为 IIS 实例上的所有站点创建单个 robots.txt 文件

Tim*_*son 6 iis iis-7 robots.txt

我想创建一个 robots.txt 文件,并将它提供给我的 IIS(在本例中为 7)实例上的所有站点。

我不想在任何单个站点上配置任何内容。

我怎样才能做到这一点?

Ben*_*Ben 5

robots.txt 文件的替代方案是X-Robots-Tag HTTP 标头,详情如下:

http://googleblog.blogspot.com/2007/07/robots-exclusion-protocol-now-with-even.html

可以通过添加自定义 HTTP 标头在 IIS 上应用服务器范围

IIS 6:右键单击“网站”文件夹 > 属性 > HTTP 标头

IIS 7:在服务器主屏幕上,单击 HTTP Request Headers,选择“添加”

与 robots.txt 不同,这似乎是 Google 专有的,并且与 robots.txt 一样,它仅对“合规”搜索引擎索引器有用。


Cas*_*mer 4

可以使用 IIS 的 Url Rewrite 模块来完成。

创建这些文件夹:

\Inetpub\wwwroot\allsites
\Inetpub\wwwroot\site1
\Inetpub\wwwroot\site2
Run Code Online (Sandbox Code Playgroud)

使用上面 site# 的路径创建 2 个网站。在每个网站内,创建一个名为allsites的虚拟目录,指向\Inetpub\wwwroot\allsites

接下来,创建这些文件。每个都应该有独特的内容来验证它在测试期间是否有效:

\Inetpub\wwwroot\allsites\robots.txt
\Inetpub\wwwroot\site2\robots.txt
Run Code Online (Sandbox Code Playgroud)

如果尚未安装 IIS 的 URL 重写模块,请安装此模块。

将其放入每个网站的 web.config 中:

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <system.webServer>
        <rewrite>
            <rules>
                <clear />
                <rule name="Rewrite robots.txt">
                    <match url="^(robots.txt)$" />
                    <conditions logicalGrouping="MatchAll" trackAllCaptures="false">
                        <add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
                    </conditions>
                    <action type="Rewrite" url="/allsites/robots.txt" />
                </rule>
            </rules>
        </rewrite>
        <directoryBrowse enabled="true" />
    </system.webServer>
</configuration>
Run Code Online (Sandbox Code Playgroud)

该规则的作用是匹配诸如 之类的 url http://mysite/robots.txt,并将其重写为 request http://mysite/allsites/robots.txt instead。但是,只有当 robots.txt 文件在该位置的文件系统上不存在时,它才会执行此操作。

因此,您可以将通用的 robots.txt 放在所有站点中,但可以通过在网站根目录中放置自定义 robots.txt 来覆盖您想要的任何站点。

这不是重定向。远程网络爬虫不会知道 IIS 正在幕后执行此操作。

更新:

我尚未在配置中执行此操作,但 Url Rewrite 模块确实支持可以在服务器级别定义的全局规则。因此您不需要为每个站点都定义它。

http://learn.iis.net/page.aspx/460/using-the-url-rewrite-module/

“全局和分布式重写规则。URL Rewrite 使用全局规则来定义服务器范围的 URL 重写逻辑。这些规则在 applicationHost.config 文件中定义,并且它们取代在配置层次结构中较低级别配置的规则。该模块还使用分布式定义特定于特定配置范围的 URL 重写逻辑的规则。可以使用 Web.config 文件在任何配置级别上定义此类规则。”