В вопросах php пока разбираюсь плохо. Возникла необходимость сделать редирект, но, как оказалось, средствами .htaccess сделать это проблематично, поэтому сделал связку из них. Вроде работает, но это только частные случаи и оказалось, что этого мало.
Суть:
Есть адреса, начинающиеся с site/component/users.
Для них работает правило в htaccess "Redirect 301 /component/users http://site.ru"
Все адреса, в которых есть "site/component/users/profile*" должны отправляться на главную. И вот тут был первый камень, так как есть еще адреса типа : "/component/users/profile?Itemid=*", а хтаксес игнорит знак "?" и он остается хвостом.
Тогда Я дописал в index.php вот такой код:
<?php
$getURI = $_SERVER['REQUEST_URI'];
$newURI = str_replace("?Itemid=101", "", $getURI);
if ($_SERVER['REQUEST_URI'] !== $newURI){
header("HTTP/1.1 301 Moved Permanently");
header("Location: $newURI");
}
?>
Но, как видно, он работает только если после "?Itemid=" стоит 101 (частый случай). Но если менять число, то начинается либо 404, либо путем обрезания кривая строка и ДНС не существует. Подскажите, как решить этот вопрос, чтобы выражение реагировало адекватно на любую информацию после "?Itemid=" ?
Это первая часть вопроса. Вторая:
На этом же куске адреса сидят и вот такие адреса, типа "site/component/users/?view=login&Itemid=170". Срабатывает редирект, и адрес обрезается до вида "site/?view=login&Itemid=170"...
И вот тут у меня уже ступор. Подскажите, как настроить редирект (видно, придется снова через php), чтобы адреса, содержащие "?view=login&Itemid=*" уже переадресовывать на другую страницу, а не на главную, как это было выше? То есть должен работать редирект для обоих примеров, но в зависимости от ситуации (profile или ?view=login) отрабатывать по разному...
Заранее благодарен за подсказки!