ModX 301 редирект

psics
На сайте с 02.04.2009
Offline
130
1332

Подскажите как сделать редирект со страницы

/body на /bodyart

Стандартно выскакивает после редиректа ?q=

siv1987
На сайте с 02.04.2009
Offline
427
#1

RewriteRule ^body$ /bodyart? [R=301,L]

T
На сайте с 16.01.2014
Offline
7
#2

RewriteRule ^body bodyart [R=301,NC,L]

psics
На сайте с 02.04.2009
Offline
130
#3

да уже решено с помощью подсказки от siv1987. Но возникает вопрос другой. Как сделать, чтобы урл не зависел от регистра..

site.ru/test

site.ru/TesT

должны вести на одну страницу..

siv1987
На сайте с 02.04.2009
Offline
427
#4

Если кмс это не позволяет, лучше это и не делать. Регистр имеет значение - и плодить урлы в разном регистре не самая удачная идея.

I
На сайте с 20.05.2013
Offline
74
#5

Создаёте сниппет "r301", вставляете в него следующий код:

if(strtolower($_SERVER['REQUEST_URI']) == '/body')
{
$modx->sendRedirect('/bodyart?q=', array('responseCode' => 'HTTP/1.1 301 Moved Permanently'));
}

ну и вызываете этот сниппет на нужной странице.

Либо вставьте этот код в index.php, только после вот этой строчки $modx= new modX();

psics
На сайте с 02.04.2009
Offline
130
#6
siv1987:
Если кмс это не позволяет, лучше это и не делать. Регистр имеет значение - и плодить урлы в разном регистре не самая удачная идея.

вы не поняли. Мне нужно наоборот - чтобы при вводе Test, tEst, TEST переадресовывало на test

В итоге при любом вводе урла будет одна страница..

---------- Добавлено 11.11.2014 в 16:11 ----------

$host = $_SERVER[HTTP_HOST];//имя хоста

$uri = $_SERVER[REQUEST_URI];//здесь хранится адрес без имени хоста
$uri1 = str_replace ("/", "", $uri);
$uri1 = str_replace ("_", "", $uri1);
$uri1 = str_replace ("-", "", $uri1);
$uri1 = str_replace (".", "", $uri1);

$host1 = str_replace ("/", "", $host);
$host1 = str_replace ("_", "", $host1);
$host1 = str_replace ("-", "", $host1);
$host1 = str_replace (".", "", $host1);

if($uri != "/" || !ctype_lower($host1)){
if (!ctype_lower($uri1) || !ctype_lower($host1))
{
$uri = mb_strtolower($uri);//переводим адрес в нижний регистр
$host = mb_strtolower($host);//переводим хост в нижний регистр
header ('HTTP/1.1 301 Moved Permanently');//редиректим
header("Location: http://".$host.$uri);
}

}

Вот так если сделать, что скажете?

psics
На сайте с 02.04.2009
Offline
130
#7

этот вариант, что выше написал работает на битриксе. А на модХ нет. То ли не туда ввожу.

Добавлял в index.php

psics
На сайте с 02.04.2009
Offline
130
#8

ни у кого нету идей, или готовых решений?

---------- Добавлено 13.11.2014 в 12:25 ----------

$lowerURI = strtolower($_SERVER['REQUEST_URI']);

if($_SERVER['REQUEST_URI'] != lowerURI){

header("HTTP/1.1 301 Moved Permanently");

header("Location: http://" . $_SERVER['HTTP_HOST'] . $lowerURI);

exit();

}

Нашел еще такое решение. Вопрос, я добавляю в index.php в самое начало. И получаю:

Неверное перенаправление на странице

J
На сайте с 20.02.2014
Offline
120
jkm
#9
psics:
if($_SERVER['REQUEST_URI'] != lowerURI){

Пропущенный $ перед lowerURI приводит к тому, что php интерпретирует как строковую константу и сравнение происходит с строкой "lowerURI", а не с содержимым переменной $lowerURI и происходит вечный редирект.

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий