none
Web.configでのnoindexの設定方法について RRS feed

  • 質問

  • ▼やりたいこと

    ディレクトリごとにnoindexを設定したいです。

    (例https://www.example.com/category/ というディレクトリがあった場合に、 /category/ ディレクトリ配下のページをnoindexにしたいです。

    ▼質問

    Web.configにおいてどのような記述をすればよろしいでしょうか?

    参照したサイトには以下のような例が書いてあったのですが、どのようにディレクトリを指定すればよいか分かりません。

    <nwebsec>
        <httpHeaderSecurityModule>
            <x-Robots-Tag enabled="true"
                           noIndex="true"
                           noFollow="false"
                           noArchive="false"
                           noOdp="false"
                           noSnippet="false"
                           noImageIndex="false"
                           noTranslate="false"/>
        </httpHeaderSecurityModule>
    </nwebsec>

    参照サイト:https://docs.nwebsec.com/en/4.1/nwebsec/Configuring-xrt.html

    よろしくお願いいたします。


    2018年9月3日 4:40

回答

  • URL Rewrite Module 2.0 の Outbound Rule を利用したようですね。

    > いかがでしょうか?

    category フォルダのリソースを要求した時だけ、応答ヘッダに期待通り X-Robots-Tag: noindex, nofollow が設定されるでしょうか? Fiddler などを使って確認してください。

    期待通りの結果が確認できればそのルールでも OK だと思いますが、一点だけ。

    Outbound rule を利用する場合は、サーバーの負担を減らすため PreCondition を設定するようガイドラインがあります。詳しくは以下の記事の Defining a Precondition のセクションを見てください。

    Creating Outbound Rules for URL Rewrite Module
    https://docs.microsoft.com/en-us/iis/extensions/url-rewrite-module/creating-outbound-rules-for-url-rewrite-module

    今回のケースでどのぐらい負担が減らせるのか、効果があるのかは分かりませんが、盲目的にそれに従って PreCondition を設定した場合、以下のルールになると思います。

    <rewrite>
        <outboundRules>
            <rule name="Set X robots Tag" preCondition="IsCategory">
                <match serverVariable="RESPONSE_X_Robots_Tag" pattern=".*" />
                <action type="Rewrite" value="noindex, nofollow" />
            </rule>
            <preConditions>
                <preCondition name="IsCategory">
                    <add input="{REQUEST_URI}" pattern="/category/" />
                </preCondition>
            </preConditions>
        </outboundRules>
    </rewrite>

    上記のルールを自分の環境(Windows 10 64-bit, IIS 10, URL Rewrite Module 2.0 x64)の ASP.NET Web アプリの web.config に設定して検証してみましたが、category フォルダのリソースを要求した時だけ、応答ヘッダに X-Robots-Tag: noindex, nofollow が設定されることは確認できました。

    Fiddler での確認画像を下に貼っておきます。


    • 編集済み SurferOnWww 2018年9月4日 2:11 リンク先誤り訂正
    • 回答としてマーク Aoki Chainsmoker 2018年9月4日 2:40
    2018年9月4日 1:40

すべての返信

  • > 参照したサイトには以下のような例が書いてあったのですが、どのようにディレクトリを指定すればよいか分かりません。

    「参照したサイト」をきちんと全部読んで理解した上での質問ですか?

    自分はざっとしか見てないのでハズレかもしれませんが、サードパーティ製の何か (NWebsec?) を導入して何らかの設定をすると、その HTTP モジュールが web.config の設定を読んで応答ヘッダに X-Robots-Tag: noindex, nofollow というような設定をしてくれるというようなことに見えますけど。

    少なくとも自分は web.config の設定だけ(NWebsec とかのサードパーティ製の SW 無しで)でそんなことができるはずはないと思ってますけど。
    2018年9月3日 5:14
  • abc.comは実在ドメインですので、質問者さんがドメイン所有者でない限り迷惑が掛かります。例示用にexample.comが存在します。

    https://www.example.com/robots.txtに

    user-agent: *
    disallow: /category/
    

    という内容のテキストファイルを置いてはどうですか? cf. robots.txtの仕様

    2018年9月3日 5:19
  • 佐祐理様

    ご返信ありがとうございます。

    abc.comが実在ドメインだったとのこと、大変失礼いたしました。ご教示いただき、ありがとうございます。以後、example.comを利用するようにいたします。

    disallow: 

    は試してみたのですが、クロールをブロックできずインデックスされてしまっている状況です。。

    2018年9月3日 9:01
  • SurferOnWww様

    ご返信ありがとうございます。

    >サードパーティ製の何か (NWebsec?) を導入

    こちらまったく考慮に入れられておりませんでした。。正規なものではなかったのですね。

    NWebsecの導入も含めて考えてみます。

    2018年9月3日 9:04
  • 単純に応答ヘッダに X-Robots-Tag: noindex, nofollow というようなものを入れたいということなら IIS, ASP.NET の機能だけでも可能です。

    条件によっていろいろ細かく制御するという話ですと web.config に記述するだけということでは済まないですが、自力でコードを書ければ実装することは可能だと思います。

    2018年9月3日 9:14
  • そもそも即時反映されるよう、コンテンツの有効期限等は設定されているのでしょうか? 現時点でそのような設定がされていない場合、どのような手段をとったとしても検索エンジンクローラーは更新されたことに気付かず、あらゆる反映は行われないと思うのですが…。

    # そしてそのような対応が事前に行われているのであれば、今回質問された状況には陥らないわけで。

    2018年9月3日 9:15
  • SurferOnWww様

    ご返信ありがとうございます。

    >単純に応答ヘッダに X-Robots-Tag: noindex, nofollow というようなものを入れたいということなら IIS, ASP.NET の機能だけでも可能

    こちらありがとうございます!

    調べてみたところ該当する公式ページが出てきたので、なんとか実装してみます。

    2018年9月3日 9:26
  • > 調べてみたところ該当する公式ページが出てきたので、なんとか実装してみます。

    分からなかったら聞いてください。

    聞かなくても自己解決できたら、どのように解決したか簡単でいいので書いてこのスレッドはクローズしてください。

    このまま放置するのだけは止めてくださいね。

    2018年9月3日 11:31
  • SurferOnWww様

    ありがとうございます!

    なんとか、以下のようなプログラムを書くところまでたどり着きました。

    いかがでしょうか?

        <rewrite>      <outboundRules>        <rule name="Set X robots Tag">          <match serverVariable="RESPONSE_X_Robots_Tag" pattern=".*" />          <conditions>            <add input="{REQUEST_URI}" pattern="/category/" />          </conditions>          <action type="Rewrite" value="noindex, nofollow"/>        </rule>      </outboundRules>    </rewrite>

    2018年9月3日 15:00
  • URL Rewrite Module 2.0 の Outbound Rule を利用したようですね。

    > いかがでしょうか?

    category フォルダのリソースを要求した時だけ、応答ヘッダに期待通り X-Robots-Tag: noindex, nofollow が設定されるでしょうか? Fiddler などを使って確認してください。

    期待通りの結果が確認できればそのルールでも OK だと思いますが、一点だけ。

    Outbound rule を利用する場合は、サーバーの負担を減らすため PreCondition を設定するようガイドラインがあります。詳しくは以下の記事の Defining a Precondition のセクションを見てください。

    Creating Outbound Rules for URL Rewrite Module
    https://docs.microsoft.com/en-us/iis/extensions/url-rewrite-module/creating-outbound-rules-for-url-rewrite-module

    今回のケースでどのぐらい負担が減らせるのか、効果があるのかは分かりませんが、盲目的にそれに従って PreCondition を設定した場合、以下のルールになると思います。

    <rewrite>
        <outboundRules>
            <rule name="Set X robots Tag" preCondition="IsCategory">
                <match serverVariable="RESPONSE_X_Robots_Tag" pattern=".*" />
                <action type="Rewrite" value="noindex, nofollow" />
            </rule>
            <preConditions>
                <preCondition name="IsCategory">
                    <add input="{REQUEST_URI}" pattern="/category/" />
                </preCondition>
            </preConditions>
        </outboundRules>
    </rewrite>

    上記のルールを自分の環境(Windows 10 64-bit, IIS 10, URL Rewrite Module 2.0 x64)の ASP.NET Web アプリの web.config に設定して検証してみましたが、category フォルダのリソースを要求した時だけ、応答ヘッダに X-Robots-Tag: noindex, nofollow が設定されることは確認できました。

    Fiddler での確認画像を下に貼っておきます。


    • 編集済み SurferOnWww 2018年9月4日 2:11 リンク先誤り訂正
    • 回答としてマーク Aoki Chainsmoker 2018年9月4日 2:40
    2018年9月4日 1:40
  • SurferOnWww様

    わざわざご確認くださり、本当にありがとうございます。

    >Outbound rule を利用する場合は、サーバーの負担を減らすため PreCondition を設定するようガイドラインがあります。

    こちらのガイドラインはまだ認識しておりませんでした!

    無事に解決までたどり着けましたので、「回答」としてマークさせていただきます。

    ご厚意に感謝いたします! ありがとうございました。

    2018年9月4日 2:40