Здравствуйте! Есть сайт, где в адресной строке можно ввести вместо одного / два и более, а страницы все равно будут открываться(пример: 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.
Сборка персонального компьютера от Artline: умный выбор для современных пользователей