Ruslan203

Ruslan203
Рейтинг
99
Регистрация
23.03.2006
siv1987:
Вам в теме дали еще два рабочих варианта.

Так я же написал что этот вариант рабочий

RewriteEngine on

RewriteBase /

# собственно перенаправление

RewriteCond %{REQUEST_URI} index.s?html$

RewriteRule ^(.*/)index.s?html $1 [R=301,L]

но редиректит без www...

siv1987:
А должен был. Проверить mod_rewrite, правила закинуть в корневой .htaccess

Оказывается проблема была в том что я правило не в начале htaccess поставил....

Вот такое правило работает только для главной

RewriteEngine on

Options +FollowSymlinks

RewriteBase /

RewriteCond %{HTTP_HOST} ^site.ru(.*)

RewriteRule ^(.*)$ http://www.site.ru/$1 [R=301,L]

RewriteCond %{THE_REQUEST} ^(GET|HEAD)\ /index.shtml

RewriteRule .* / [R=301,L]

AddType "text/html; charset=UTF-8" .html .htm .shtml

А вот внутри каталогов нифига....

---------- Добавлено 05.03.2013 в 20:32 ----------

ivan-lev:
Масол, приведённый код, видимо, для корня сайта - т.е. для catalog/index.htm он не сработает. (да и там кой-чего лишнего).

Ruslan203, для подкаталогов - последние 2 строчки (и shtml, и html)
RewriteEngine on

RewriteBase /
# собственно перенаправление
RewriteCond %{REQUEST_URI} index.s?html$
RewriteRule ^(.*/)index.s?html $1 [R=301,L]

Вот это правило срабатывает как надо вроде бы, но почему то перенаправляет на без www.

Как его заставить чтоб редирект был на домен с www ?

mark2011:
DirectoryIndex index.shtml index.html index.php - что стоит в этой директиве?

Да там все стоит правильно, просто яндекс проиндексировал обе ссылки, а надо чтоб склеились...

Извиняюсь по поводу shtml или html, я собственно имел ввиду любой вид чтоб превращался в /

Вообщем ни один вариант не помог:(

Пример:

1. http://www.site.ru/catalog/index.shtml редиректилась сюда http://www.site.ru/catalog/

2. http://www.site.ru/index.shtml редиректилась сюда http://www.site.ru/

любой index.shtml вообщем убирался нахер)

Лучше поставить скрытое поле, которое заполнить может только бот, и нэйм ему указать какой нибудь "email"

bay_ebook:
Правильно :)

Полная функция будет выглядеть примерно так:

function markText ($t, $q) {
$first = mb_substr($q, 0, 1, 'UTF-8');
$first = mb_strtoupper($first, 'UTF-8');
$first = $first.mb_substr($q, 1, strlen($q), 'UTF-8');
return str_ireplace(array($q, $first), array('<b style="color: #990000;">'.$q.'</b>', '<b style="color: #990000;">'.$first.'</b>'), $t);
}

'UTF-8' - меняем на нужную кодировку :)

Да вот так работает! Кстати как сюда захерачить:

Вот ищем "Иван" он нашелся нажали пробел и чтоб четко был только иван без всяких результатов "Иванов Иванова и т д ?

bay_ebook:
Хм, может не совсем понял задание, но не проще тогда убрать регулярку вообще?

function markText ($t, $q) {
return preg_replace ("~($q)~iu", "<b style=\"color: #990000\">\\1--$q--</b>", $t);
}

заменить на

function markText ($t, $q){
return str_ireplace($q, '<b style="color: #990000;">'.$q.'</b>', $t);
}

В таком случае даже на мастерхосте выделение заглавных букв пропадает:))

ivan-lev:
setlocale(LC_ALL,"ru_RU.utf8");

вы имеет ввиду что тут:

setlocale (LC_ALL, 'ru_RU.utf-8');

был пропущен дефис? Я его добавил но бестолку:(

---------- Добавлено 01.03.2013 в 23:31 ----------

Милованов Ю.С:
Почему не работает?
Ошибки появляются, или что?

Попробуйте прописать одну из следующих строк перед функцией markText:
setlocale(LC_ALL,"ru_RU.cp1251");
или
setlocale(LC_ALL,"ru_RU.utf-8");

Какая кодировка на сайте? Если ЮТФ-8 - попробуйте сначала конвертить строку в ВИН-1251, пропускать через preg_replace, а потом назад в ЮТФ-8.

Вот тут проблема и решилась!

Поставил setlocale(LC_ALL,"ru_RU.cp1251 вместо utf и начало искать! Ура!) Всем спасибо ребята!

gormarket:
Можно еще для локализации места ошибки проверить, а не попадает ли в функцию маркировки текста строка поиска с уже обрезанным первым символом ?
Может в приведенном примере уже здесь вместо ожидаемого "иван" имеется на самом деле "ван" ?

Для тестирования этого можно кроме маркировки найденного текста вывести еще и саму строку поиска, например так:

function markText ($t, $q) {
return preg_replace ("~($q)~iu", "<b style=\"color: #990000\">\\1--$q--</b>", $t);
}

Строка поиска при таком выводе будет отделена от другого текста двумя дефисами.

Нету там отдельного "ван", оно находит нашего Ивана но выделяет только часть его имени "ван"

Милованов Ю.С:
Для начала сделайте как на мастерхосте(я не удивлюсь, если Вы до сих пор ждете ответа и еще сами не попробывали).
Перед работой с базой делайте запрос mysql_query("SET NAMES utf8")

В коде пхп вы имеете ввиду?

На обеих серверах же таблицы в utf... или это значения не имеет?

И куда вставить этот mysql_query("SET NAMES utf8") ?

Всего: 713