Cara membuat file robots.txt untuk semua domain di server Apache


10

Kami memiliki pengaturan server web pengembangan XAMPP Apache dengan host virtual dan ingin menghentikan ular yang merayapi semua situs kami. Ini mudah dilakukan dengan file robots.txt. Namun, kami lebih suka tidak menyertakan disallow robots.txt di setiap vhost dan kemudian harus menghapusnya ketika kami menampilkan situs tersebut di server lain.

Apakah ada cara dengan file konfigurasi apache untuk menulis ulang semua permintaan ke robots.txt di semua vhosts ke file robots.txt tunggal?

Jika demikian, dapatkah Anda memberi saya contoh? Saya pikir ini akan menjadi seperti ini:

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

Terima kasih!


robots.txt tidak wajib dan beberapa perayap akan mengabaikannya. Seharusnya tidak dilihat sebagai fitur keamanan. Jika Anda ingin menyembunyikan situs Anda sampai siap untuk publik, tambahkan otentikasi.
Mircea Vutcovici

Jawaban:


25

Apache mod_alias dirancang untuk ini dan tersedia dari sistem inti Apache, dan dapat diatur di satu tempat dengan hampir tanpa pemrosesan overhead, tidak seperti mod_rewrite.

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

Dengan baris itu di file apache2.conf, di luar semua vhost, http://example.com/robots.txt - di situs web mana pun yang dilayaninya, akan menampilkan file yang diberikan.


Ini. Letakkan sebuah Aliasdi setiap <VirtualHost>blok. +1.
Steven Monday

Terima kasih! Itu bekerja dengan sempurna. Saya tahu ada solusi mudah ...
Michael Berkompas

Jika Anda menginginkannya di setiap virtual-host, Anda tidak perlu memasukkannya ke dalam semuanya. Itu bisa naik pada tingkat global, seperti alias default / manual tidak di luar kotak.
Alister Bulman

Terima kasih atas solusinya walaupun melihat C: / di sana membuat saya muak dengan mengetahui ada server windows lain di luar sana :) Saya meletakkan edit saya di file modules.conf saya atau di mod-enabled / alias.conf seperti: Alias
/robots.txt

1
Untuk memastikan file ini tersedia bahkan ketika kontrol akses lainnya akan memblokirnya, masukkan alias, dan <Location "/robots.txt"> Allow from all </Location>segera setelah itu, di dalam main<IfModule alias_module>
Walf

1

Letakkan robots.txtfile global umum Anda di suatu tempat di sistem file server Anda yang dapat diakses oleh proses apache. Demi ilustrasi, saya akan menganggap itu di /srv/robots.txt.

Kemudian, untuk mengatur mod_rewriteagar melayani file itu kepada klien yang memintanya, masukkan aturan berikut ke dalam setiap <VirtualHost>blok konfigurasi vhost :

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

Jika Anda meletakkan aturan penulisan ulang ke dalam .htaccessfile per-direktori alih-alih <VirtualHost>blok, Anda perlu memodifikasi sedikit aturan:

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

Bisakah Anda menjelaskan ini "Letakkan file robots.txt umum global Anda di suatu tempat di sistem file server Anda yang dapat diakses oleh proses apache. Demi ilustrasi, saya akan menganggapnya di /srv/robots.txt." lebih detail? Saya perlu tahu apa yang Anda maksud dengan membuat direktori yang tersedia untuk proses apache?
Michael Berkompas

Setiap situs terdapat dalam folder seperti testsite.int.devcsd.com di bawah C: \ xampp \ vhosts
Michael Berkompas

@Michael: Jangan repot-repot dengan mod_rewriteperetasan yang terlalu rumit ini . Gunakan Aliassebagai gantinya, seperti yang disarankan oleh Alister.
Steven Senin

0

Tidak yakin apakah Anda menjalankan XAMPP di Linux atau tidak, tetapi jika ya, Anda bisa membuat symlink dari semua host virtual ke file robots.txt yang sama, tetapi Anda perlu memastikan bahwa konfigurasi Apache Anda untuk setiap host virtual adalah diizinkan untuk mengikuti symlink (di bawah <Directory>arahan Options FollowSymLinks).


Saya lebih suka tidak perlu mengedit setiap deklarasi vhost tunggal. Ada lebih dari 30 ... Plus, saya ingin menjadi over-otomatis sehingga saya tidak perlu melakukan apa-apa ketika membuat vhost baru.
Michael Berkompas

Michael, cukup gunakan sed untuk melakukan edit massal, hal-hal yang cukup mudah, Anda pasti tidak perlu melakukannya secara manual. Ditata bagaimana melakukannya di sini di bagian bawah: blog.netflowdevelopments.com/2012/10/11/…
unc0nected

0

Pendekatan berbeda untuk solusi.

Saya meng-host beberapa (lebih dari 300) virtualhost di lingkungan cluster saya. Untuk melindungi server saya agar tidak dihancurkan oleh crawler, saya mendefinisikan penundaan Penelusuran selama 10 detik.

Namun, saya tidak dapat menegakkan semua klien saya dengan konfigurasi tetap robots.txt. Saya membiarkan klien saya menggunakan robots.txt mereka sendiri jika mereka mau.

Modul rewrite terlebih dahulu memeriksa apakah file tersebut ada. Jika tidak ada, modul menulis ulang ke konfigurasi default saya. Contoh kode di bawah ini ...

Agar tetap menulis ulang internal, alias harus digunakan. Alih-alih mendefinisikan alias baru yang dapat menyebabkan beberapa konflik sisi pengguna, saya menemukan robots.txt di dalam / APACHE / error / folder yang sudah memiliki alias sebagai konfigurasi default.

<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>
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.