Здравствуйте! Есть сайт, где в адресной строке можно ввести вместо одного / два и более, а страницы все равно будут открываться(пример: test//home///page). Необходимо сделать так чтобы если в адресной строке встречается два и более / подряд, ссылаться на ту же самую страницу только уже с нормальными слешами (например: test/home/page). Пробовал сделать так:
$pos = strpos($_SERVER['REQUEST_URI'], '//');
if($pos != '')
{
$link = str_replace ( '//', '/', $_SERVER['REQUEST_URI']);
header('Location: ' . $link .'');
}
Почему-то не берет во внимание слешы в самом начале адреса (например:test//home/page).
Вот вам решение через .htaccess для apache:
RewriteEngine On
RewriteCond %{REQUEST_URI} //
RewriteRule ^(.*)$ http://your.site/$1 [R,L,QSA]
На основании этого ответа.
используйте замену регуляркой
$link = preg_replace('/\/+/', '/', $_SERVER['REQUEST_URI']);
Но такое выглядит кривовато (зубочистка), поэтмоу, обычно пишут так:
$link = preg_replace('!/+!', '/', $_SERVER['REQUEST_URI']);
Но лучше подобные задачи решать средствами apache/nginx.
Современные инструменты для криптотрейдинга: как технологии помогают принимать решения
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости