Переадресация, при наборе неполной ссылки.

vave

Полезный
Регистрация
22 Июн 2007
Сообщения
466
Реакции
16
Подскажите, дорогие друзья, как можно сделать переадресацию, если пользователь переходит по ссылке Для просмотра ссылки Войди или Зарегистрируйся

Но при этом не выполнять переадресацию если ссылка полноценная Для просмотра ссылки Войди или Зарегистрируйся / Для просмотра ссылки Войди или Зарегистрируйся итд итп
 
Последнее редактирование:
если пользователь переходит по ссылке Для просмотра ссылки Войди или Зарегистрируйся

Но при этом не выполнять переадресацию если ссылка полноценная Для просмотра ссылки Войди или Зарегистрируйся / Для просмотра ссылки Войди или Зарегистрируйся итд итп
Попробуй в корневой htaccess добавить:
Код:
RewriteEngine On
RewriteBase /

Rewritecond %{REQUEST_URI} ^/menu$
Rewritecond %{QUERY_STRING} ^$
RewriteRule ^menu$ / [R=301,L]
Только учитывай, что я написал правила на Для просмотра ссылки Войди или Зарегистрируйся , но не на Для просмотра ссылки Войди или Зарегистрируйся - если нужно, можно дописать правило. В остальном должно работать.

Если нужна реализации на PHP (учитывая раздел, где создал тему) - скажи, напишем правило.
 
preg_match('/\/menu\?$/', $url, $match);

if($match) {
$tourl = 'Для просмотра ссылки Войди или Зарегистрируйся
@ob_end_clean();
header("HTTP/1.1 301 Moved Permanently");
header('Location: ' . $tourl);
exit();
}
}
 
если правильно понимаю задачу - можно и так:

PHP:
if (empty($_REQUEST)) {
    // redirect code here
}
 
Лучше ведь правило в htaccess?
Может в htaccess может и проще, но не лучше, по-моему. Ибо сталкивался с тем, что даже на совместимых с htaccess серверах не апаче, например, litespeed инструкции обрабатываются немного по-своему и то, что сработало на локалхосте в apache, на хостинге уже не работает. А если у тебя nginx сервер, то вообще придется писать совсем другие инструкции по nginx.

ИМХО, лучший вариант - делать маршрутизацию непосредственно в своем приложении. А там уже сделать как нравится, хочешь тебе на 404 переадресация будет, а хочешь, можно попробовать угадать, что именно имелось ввиду, и адресовать юзера туда. Например, можно использовать разные схемы транслита, а сайт будет понимать это, но отправлять будет на основную (т.н. каноническую) страницу.
 
Я сделал таким образом. в файле в корневом директории .htaccess прописал
Код:
preg_match('/\/menu\?$/', $url, $match);

if($match) {
$tourl = 'http://';
@ob_end_clean();
header("HTTP/1.1 301 Moved Permanently");
header('Location: ' . $tourl);
exit();
}
}

Должно работать. Если не получится пиши в ЛС, помогу
 
Назад
Сверху