301 редирект, mod_rewrite

12
Unlock
На сайте с 01.08.2004
Offline
724
#11

Кириллицы нет. Вечером проверю, спасибо!

Есть желание, - тысяча способов; нет желания, - тысяча поводов! /Петр-I/.
progress
На сайте с 11.07.2006
Offline
125
#12
Shtogrin:
У вас кириллицы нет в адресе? В скрипте script.php в начале
if(isset($_GET['text']) && $_GET['text'] != strtolower($_GET['text']))

{
header('Location: '.strtolower($_SERVER['REQUEST_URI']));
exit (0);
}

Мне кажется, проще намного регуляркой все это сделать, и затронется только то, что нужно

if($ENV{'REQUEST_URI'} =~ s/\bKeyword\b/keyword/g) {

print "HTTP/1.1 301 Moved Permanently\n";

print "Location: $ENV{'REQUEST_URI'}\n\n";

}

только это перл, перепишите кто-нибудь на пхп это :)

Shtogrin
На сайте с 02.11.2006
Offline
95
#13

Проще в чем? Сколько слов "Keyword" вы снова собираетесь запихнуть в код? "Keyword" для каждого запроса свой. Или регулярное выражение будет быстрее strtolower?

www.shtogrin.com (http://www.shtogrin.com/). Канцтовары (http://www.invit.com.ua/). 1С Бухгалтерия (http://account.kiev.ua/).
progress
На сайте с 11.07.2006
Offline
125
#14

Хм... не врубился сразу что киворды разные все, я думал их несколько одинаковых в одном запросе. Тогда да, Вы правы

Unlock
На сайте с 01.08.2004
Offline
724
#15
Shtogrin:
У вас кириллицы нет в адресе? В скрипте script.php в начале
if(isset($_GET['text']) && $_GET['text'] != strtolower($_GET['text']))

{
header('Location: '.strtolower($_SERVER['REQUEST_URI']));
exit (0);
}

Это вариант работает, но похоже есть какой-то конфликт с таким правилом:

<?

global $REQUEST_URI;
if(stristr($REQUEST_URI,'%20'))
{

$url=str_replace('%20','+',$REQUEST_URI);
header("HTTP/1.1 301 Moved Permanently");
header('Location: '.$url);

exit();
}
?>

Подскажите пожалуйста, в чем проблема? Редирект с заглавных букв на строчные работает, но тогда перестает работать редирект со страниц вида keyword%20keyword2 на keyword1+keyword2. Если убираю ваш код, редирект работает.

Shtogrin
На сайте с 02.11.2006
Offline
95
#16

//если есть пробел %20, то заменяем его на + и в нижний регистр

if(strstr($_SERVER['REQUEST_URI'],'%20')!==FALSE)
{
header("HTTP/1.1 301 Moved Permanently");
header('Location: '.strtolower(str_replace('%20','+',$_SERVER['REQUEST_URI'])));
exit(0);
}
//если есть text и есть верхний регистр, то в нижний
if(isset($_GET['text']) && $_GET['text'] != strtolower($_GET['text']))
{
header("HTTP/1.1 301 Moved Permanently");
header('Location: '.strtolower($_SERVER['REQUEST_URI']));
exit (0);
}

Разместите вверху в таком порядке. В адресе в одном месте возникают пробелы (text=keyword keyword ), или есть еще параметры с пробелами или другими спец. символами?

Unlock
На сайте с 01.08.2004
Offline
724
#17

Shtogrin, сегодня проверю, о результате отпишусь. В адресе сейчас нет пробелов, т.к. стоит замена пробела на +, но раньше по глупости не сделал этой модификации и гугл успел скушать страницы с %20 между кейвордами, и поэтому пришлось делать редирект на адреса с +. Больше пробелов или спецсимволов нет. Спасибо огромное!!!

Unlock
На сайте с 01.08.2004
Offline
724
#18

Shtogrin, спасибо огромное, редирект работает как часы!!!

12

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