Редактиране на код

Някой може ли да ми редактира този код, смисъл може ли да се направи така че на определени ботове да не се отварят ads1,ads2,ads3 файла. Както е направено за определени ИП адреси като се въведат ИП адреси и за тях не се зарежда този файл, искам така например за google bot като се напише за бота на гугъл да не се зарежда. Както например в .htaccess се забраняват ботовете по имената им искам и тука така да се направи, ако е възможно.

<?php
$ip = $_SERVER['REMOTE_ADDR'];
$ips = array('ТВОЙТО ИП');

foreach ($ips as $oo){
if($oo === $ip){ }else{
$theAds = array('ads1.php', 'ads2.php', 'ads3.php');
include $theAds[mt_rand(0, count($theAds) - 1)];
}
}
?>
 
Да видях и как трябва да изглежда кода ми като се добави в този код, че да проверява и после ако е той да не му показва, че не ме бива в php
 
тия неща обикновено се правят в .htaccess, не виждам причина да ги ръгаш в php, особено пък като не му и разбираш
 
специфичното при .htaccess е, че никой, ама никой не знае как точно работи, и всеки път като решиш да правиш нещо в този файл отваряш и питаш Google
 
Като сложа така, дава грешка 500. Къде ми е грешката, а и как трябва да се укаже пътя до файла смисъл файла ads1.php ми се намира на public_html/wp-content/themes/anima ? И тъй като са 3 файла така ли трябва да се изброяват ads1.php|ads2.php|ads3.php ?

BrowserMatchNoCase "GoogleBot" bad_bot
<Files ads1.php>
Require not env bad_bot
</Files>
 
Кода така си работи, но тъй като файловете се извикват от php кода и не може да се блокира и пак си зареждат. Единствения вариант е php кода да се редактира и да се спре.

BrowserMatchNoCase "Chrome" bad_bot
<FilesMatch "(ads1|ads2|ads3)\.php$">
<RequireAll>
Require not env bad_bot
</RequireAll>
</FilesMatch>
 
Пробвай така:
<?php
if(strpos( $_SERVER['HTTP_USER_AGENT'], 'Googlebot' )=== false){
$theAds = array('ads1.php', 'ads2.php', 'ads3.php');
include $theAds[mt_rand(0, count($theAds) - 1)];
}
?>
 
Пробвай така:
<?php
if(strpos( $_SERVER['HTTP_USER_AGENT'], 'Googlebot' )=== false){
$theAds = array('ads1.php', 'ads2.php', 'ads3.php');
include $theAds[mt_rand(0, count($theAds) - 1)];
}
?>
Е златен си, ако искам да изброявам няколко бота така ли трябва да е 'Googlebot','Bing','Yahoo' и т.н.
 
Според мен, ако използваме
https://deviceatlas.com/blog/list-of-user-agent-strings
ще е така:

<?php
// Искаме да блокираме Goglebot Bing Yahoo и IP = 95.87.103.108
if(strpos( $_SERVER['HTTP_USER_AGENT'], 'Googlebot' )=== false && $_SERVER['HTTP_USER_AGENT'], 'Yahoo' )=== false
&& $_SERVER['HTTP_USER_AGENT'], 'bingbot' )=== false && strpos( $_SERVER['REMOTE_ADDR'], '95.87.103.108' )=== false )
{
$theAds = array('ads1.php', 'ads2.php', 'ads3.php');
include $theAds[mt_rand(0, count($theAds) - 1)];
}
?>
 
Като сложа така, дава грешка 500. Къде ми е грешката, а и как трябва да се укаже пътя до файла смисъл файла ads1.php

Не знам защо ти е да указваш файл, след като .htaccess работи на ниво папка. А това че има грешка 500 не е причина да решиш, че не може да се направи. Грешката най-вероятно идва от това, че нямаш пуснат някой модул на Apache, който работи с BrowserMatchNoCase. Но хората го правят и без такива модули, ами само с mod_rewrite: https://stackoverflow.com/questions...spiders-for-a-special-directory-with-htaccess
 
Според мен, ако използваме
https://deviceatlas.com/blog/list-of-user-agent-strings
ще е така:

<?php
// Искаме да блокираме Goglebot Bing Yahoo и IP = 95.87.103.108
if(strpos( $_SERVER['HTTP_USER_AGENT'], 'Googlebot' )=== false && $_SERVER['HTTP_USER_AGENT'], 'Yahoo' )=== false
&& $_SERVER['HTTP_USER_AGENT'], 'bingbot' )=== false && strpos( $_SERVER['REMOTE_ADDR'], '95.87.103.108' )=== false )
{
$theAds = array('ads1.php', 'ads2.php', 'ads3.php');
include $theAds[mt_rand(0, count($theAds) - 1)];
}
?>
Мерси :)
 
Последно редактирано:

Горе