Отрезание www

Skom
На сайте с 02.12.2006
Offline
165
818

Собственно, чтобы не распылять PR.

Наверное, вопрос скорее технический, но пишу сюда, бо може кто уже делал такое.

В .htaccess

RewriteEngine On

RewriteCond %{HTTP_HOST} ^www.mysite\.com [NC]

RewriteRule ^(.*)$ http://mysite.com/$1 [R=301]

Всё вроде зашибись работает, но есть проблема. Сайту уже много лет и в процессе создания часто использовались параметры скриптов с пробелами.

Например:

www.mysite.com/?t=mama mila ramu

Соответственно, Гугл хранит это как

www.mysite.com/?t=mama%20mila%20ramu

При включении вышеупомянутого рерайта, он воспринимает знак % как собственно знак %, а не как %20 и в результате получаем

mysite.com/?t=mama%2520mila%2520ramu

Что-то всё перерыл, но так и не понял - как сие пофиксить.

Поможите, ежели кто знает....

Сервер Apache

Linux Gentoo

Cras amet qui numquam amavit quique amavit cras amet
M
На сайте с 03.11.2004
Offline
94
#1

у меня с тем же рерайтом и пропусками нормально всё работает, может у тебя в ссылках % стоит?

Skom
На сайте с 02.12.2006
Offline
165
#2

Да, стоит...

Так как еще кроме пробелов раньше были всякие там русские буковки.

Соответственно, используется rawurlencode

Сейчас-то я могу отрубить это всё. Но вот в кэше Гугла полно старых вариантов.

RealDodger
На сайте с 16.12.2006
Offline
17
#3
Skom:
RewriteEngine On
RewriteCond %{HTTP_HOST} ^www.mysite\.com [NC]
RewriteRule ^(.*)$ http://mysite.com/$1 [R=301]

Я так понимаю, это обрезает www в адресной строке. Это должно и на тИЦ повлеять

Skom
На сайте с 02.12.2006
Offline
165
#4

Да фиг бы с ним, с тИЦ.

На англоязычном сайте он до лампочки :)

Вот как из

mysite.com/?t=mama%2520mila%2520ramu

сделать

mysite.com/?t=mama%20mila%20ramu

Вот в чём вопрос 🙄

M
На сайте с 03.11.2004
Offline
94
#5

%20 замени на пропуски, Google же воспринимает их как символы

Skom
На сайте с 02.12.2006
Offline
165
#6

Да я заменю.

Там в скрипте-то подправить 2 минуты.

Но на сайте больше 100к страниц.

И Гугл хранит их в старом варианте.

Т.е. он приходит уже по старому адресу и надо ему грамотный 301-й подсунуть.

Skom
На сайте с 02.12.2006
Offline
165
#7

В общем, если кому нужно, лечится так:

Методами ModRewrite я не нашёл метода воздействия на запрос.

Но пхп великий весч 😂

.htaccess:

RewriteEngine On

RewriteCond %{HTTP_HOST} ^www.mysite\.com [NC]

RewriteRule ^(.*)$ http://mysite.com/$1 [R=301]

php:

<?

$hh=GetEnv(HTTP_HOST);

$ri=GetEnv(REQUEST_URI);

$realUrl="http://$hh$ri";

if(eregi("%25",$realUrl))

{

$realUrl=ereg_replace("%25","%",$realUrl);

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

header("Location: ".$realUrl);

header("Connection: close");

};

?>

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