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!
apache-2.2
php
robots.txt
Michael Berkompas
sumber
sumber
Jawaban:
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.
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.
sumber
Alias
di setiap<VirtualHost>
blok. +1.<Location "/robots.txt"> Allow from all </Location>
segera setelah itu, di dalam main<IfModule alias_module>
Letakkan
robots.txt
file 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_rewrite
agar melayani file itu kepada klien yang memintanya, masukkan aturan berikut ke dalam setiap<VirtualHost>
blok konfigurasi vhost :Jika Anda meletakkan aturan penulisan ulang ke dalam
.htaccess
file per-direktori alih-alih<VirtualHost>
blok, Anda perlu memodifikasi sedikit aturan:sumber
mod_rewrite
peretasan yang terlalu rumit ini . GunakanAlias
sebagai gantinya, seperti yang disarankan oleh Alister.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>
arahanOptions FollowSymLinks
).sumber
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.
sumber