Если бы вы знали про Git, то у вас такой ситуации просто не было бы, так же как и этой истории.
Крайне сомнительно, что для этого есть решения. Исключительно полагаться на отзывы и пробную работу с исполнителями. При желании налепить дырок - никаких проблем, плагины этот вопрос никак не решат, поскольку это все тот же код php. Чтобы не было возможности вредить - должны быть узкие функциональные возможности, чему установка CMS с полным доступом никак не способствует.
Хотя, тоже постою послушаю, вдруг есть дельные предложения.
Можно заменить:
Это уже вопрос удобства и понимания в будущем. Я, иной раз, так сокращаю, что потом читать код, вытянутый в одну строку становится утомительно. Так то и переменная redirect не требуется в данной задаче.
if (stristr($_SERVER['REQUEST_URI'],'_')) { header("Location: https://site.ru".(str_replace('_','-',$_SERVER['REQUEST_URI'])),true,301); die(); }
А там уже и preg_match вместо stristr, кому удобнее, и str_replace на preg_replace можно заменить. Результат все равно будет тот же, это уже для маньяков сравнения скорости работы команд.
Фига себе тут нагородили с простейшей задачей ))Недавно делал у себя точно такую же, только еще и с редиректом на другой домен, поскольку переезд:
$redirect = str_replace('_','-',$_SERVER['REQUEST_URI']);header("HTTP/1.1 301 Moved Permanently");header("Location: https://site.ru".$redirect);exit;
Учитывая, что приводятся все урл к такому изменению, а новые страницы уже добавляются с нужным разделителем и проблема только в редиректе - просто сделать редирект, добавив условие, чтобы не зациклить. Например, так:
if (stristr($_SERVER['REQUEST_URI'],'_')) {$redirect = str_replace('_','-',$_SERVER['REQUEST_URI']);header("HTTP/1.1 301 Moved Permanently");header("Location: https://site.ru".$redirect);exit;}
И городить при этом непонятные правила в конфигурациях тоже не придется.
Если в браузере не сохраняются куки или юзер при заходе на сайт не соглашается с обработкой куки? Прочитайте подробнее про фингерпринт. В метрике не собираются mac адреса и другие параметры железа, а все остальные параметры у тысяч устройств могут быть одинаковыми. Или может вы что то больше знаете про фингерпринт?
Поделитесь какими возможностями JS можно отличить бота от юзера?
Если не сохраняются, то это проблемы пользователя. Не соглашаются? )) Вы серьезно считаете, что соглашение или не соглашение на большинстве сайтов как-то влияет на постановку куки? Там большая часть не спрашивает, она уведомляет, что "куки используются - нажмите Ок, чтобы закрыть сообщение" )) Мак адрес в данном контексте не имеет никакого отношения к собираемым данным для фингерпринт.
Про остальное уже написал, не вижу смысла повторяться, поскольку именно об этой разнице я выше и писал, что выигрыш не просто в JS, а в коллекции собранной информации в разрезе тысяч сайтов, а не в определении по одному сайту и JS на нем. Но вы и это пропустили.
Disallow: /*?Allow: /
PS: Некротопик, однако, появился