仮想ホストを備えた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]
ありがとう!
Apache mod_alias はこのために設計されており、コアApacheシステムから利用でき、mod_rewriteとは異なり、処理オーバーヘッドがほとんどない1か所に設定できます。
Alias /robots.txt C:/xampp/vhosts/override-robots.txt
Apache2.confファイルのその行で、すべてのvhostの外側に http://example.com/robots.txt -提供するすべてのWebサイトで、指定されたファイルを出力します。
共通のグローバル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]
LinuxでXAMPPを実行しているかどうかはわかりませんが、実行している場合は、すべての仮想ホストから同じrobots.txtファイルに symlink を作成できますが、各仮想ホストのApache構成では、シンボリックリンクをたどることができます(<Directory>
ディレクティブのOptions FollowSymLinks
)。
ソリューションへの異なるアプローチ。
クラスタ環境で複数(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>