Apacheサーバー上のすべてのドメインのrobots.txtファイルを作成する方法


10

仮想ホストを備えたXAMPP Apache開発Webサーバーのセットアップがあり、serpsがすべてのサイトをクロールしないようにしたいと考えています。これはrobots.txtファイルで簡単に行えます。ただし、すべてのvhostにdisallow robots.txtを含めたくないので、別のサーバーでサイトを公開するときにそれを削除する必要があります。

Apache構成ファイルを使用して、すべてのvhosts上のrobots.txtへのすべてのリクエストを単一のrobots.txtファイルに書き換える方法はありますか?

もしそうなら、私に例を挙げてもらえますか?私はそれはこのようなものになると思います:

RewriteEngine On
RewriteRule  .*robots\.txt$         C:\xampp\vhosts\override-robots.txt [L] 

ありがとう!


robots.txtは必須ではなく、一部のクローラーはそれを無視します。セキュリティ機能と見なすべきではありません。公開の準備ができるまでサイトを非表示にする場合は、認証を追加します。
Mircea Vutcovici 2010

回答:


25

Apache mod_aliasはこのために設計されており、コアApacheシステムから使用でき、mod_rewriteとは異なり、処理オーバーヘッドがほとんどない1か所に設定できます。

Alias /robots.txt C:/xampp/vhosts/override-robots.txt

apache2.confファイルのその行を使用すると、すべての仮想ホストの外側、http: //example.com/robots.txt- それがサービスを提供するすべてのWebサイトで、指定されたファイルが出力されます。


この。Alias<VirtualHost>ブロックに入れます。+1。
スティーブン月曜日

ありがとう!それは完璧に機能しました。簡単な解決策があることを知っていました...
Michael Berkompas

すべての仮想ホストで必要な場合は、すべての仮想ホストに配置する必要はありません。デフォルトの/ manualエイリアスがそのまま使用できるように、グローバルレベルで実行できます。
Alister Bulman 2010

そこにC:/が表示されているにもかかわらず、解決策に感謝します。そこに別のWindowsサーバーがあることを知っていると、私はお腹が痛くなります。 /robots.txt /var/www/robots.txt
12

1
他のアクセス制御によってブロックされる場合でもこのファイルを利用できるようにするには、エイリアスを配置し、その<Location "/robots.txt"> Allow from all </Location>直後にメイン内に配置します<IfModule alias_module>
Walf

1

共通グローバルrobots.txtファイルを、Apacheプロセスからアクセスできるサーバーのファイルシステムのどこかに配置します。説明のために、にあると仮定します/srv/robots.txt

次に、mod_rewriteそのファイルを要求するクライアントに提供するように設定するには、各仮想ホストの<VirtualHost>構成ブロックに次のルールを追加します。

RewriteEngine on
RewriteRule ^/robots.txt$ /srv/robots.txt [NC, L]

書き換えルールをブロックで.htaccessはなくディレクトリごとのファイルに入れる場合は<VirtualHost>、ルールを少し変更する必要があります。

RewriteEngine on
RewriteBase /
RewriteRule ^robots.txt$ /srv/robots.txt [NC, L]

「共通のグローバルrobots.txtファイルを、Apacheプロセスからアクセスできるサーバーのファイルシステムのどこかに配置してください。説明のために、/ srv / robots.txtにあると仮定します。」さらに詳細に?私は、Apacheプロセスで利用可能なディレクトリを作成することによって、あなたが何を意味するかを知る必要がありますか?
Michael Berkompas

各サイトはC:\ xampp \ vhostsの下のtestsite.int.devcsd.comのようなフォルダーに含まれています
Michael Berkompas

@Michael:この過度に複雑なmod_rewriteハックを気にしないでください。Alias代わりに、Alisterの提案に従って使用してください。
スティーブン月曜日

0

LinuxでXAMPPを実行しているかどうかはわかりませんが、実行している場合は、すべての仮想ホストから同じrobots.txtファイルへのシンボリックリンクを作成できますが、各仮想ホストのApache構成が次のようになっていることを確認する必要があります。 (<Directory>ディレクティブのの下でOptions FollowSymLinks)シンボリックリンクをたどることができます。


すべての単一のvhost宣言を編集する必要はありません。30以上あります。さらに、新しいvhostを作成するときに何もする必要がないように、自動乗車にしたいです。
Michael Berkompas

マイケル、sedを使用して大量編集を行うだけで、かなり簡単です。間違いなく手動で編集する必要はありません。:一番下にここでそれを行う方法を特blog.netflowdevelopments.com/2012/10/11/...
unc0nnected

0

ソリューションへの異なるアプローチ。

クラスター環境で複数(300以上)の仮想ホストをホストしています。サーバーがクローラーによって攻撃されないように保護するために、10秒間のクロール遅延を定義します。

ただし、robots.txtの構成を固定してすべてのクライアントを強制することはできません。必要に応じて、クライアントが独自のrobots.txtを使用できるようにしました。

書き換えモジュールは、最初にファイルが存在するかどうかを確認します。存在しない場合、モジュールは私のデフォルト設定に書き換えます。以下のコード例...

内部で書き換えを維持するには、エイリアスを使用する必要があります。ユーザー側の競合を引き起こす可能性のある新しいエイリアスを定義する代わりに、デフォルトの設定としてエイリアスがすでにある/ APACHE / error /フォルダー内にrobots.txtを配置しました。

<Directory /HOSTING/*/*/public_html>
        Options SymLinksIfOwnerMatch
        <Files robots.txt>
                RewriteEngine On
                RewriteCond %{REQUEST_FILENAME} -f [OR]
                RewriteCond %{REQUEST_FILENAME} -d
                RewriteRule (.*) - [L]
                RewriteRule (.*) /error/robots.txt [L]
        </Files>
</Directory>
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.