Master-X
Форум | Новости | Статьи
Главная » Форум » Программинг, Скрипты, Софт, Сервисы » 
Тема: Вопрос по .htaccess
цитата
29/03/08 в 11:56
 violar
Привет всем! Имеются скрипты типа поискового сервиса - инфа вытаскивается из базы Яхи. Подскажите кто-нибудь, что нужно прописать в ".htaccess", чтобы при русско-язычном поиске УРЛы в браузерной строке такого вида:

_http://site.ru/?search=%D0%90%D0%B2%D1%82%D0%BE%D0%BD%D0%BE%D0%B2%D0%BE%D1%81%D1%82%D0%B8&type=web
_http://site.ru/?type=web&search=%D0%90%D0%B2%D1%82%D0%BE%D0%BD%D0%BE%D0%B2%D0%BE%D1%81%D1%82%D0%B8&pos=2
_http://site.ru/?type=web&search=%D0%90%D0%B2%D1%82%D0%BE%D0%BD%D0%BE%D0%B2%D0%BE%D1%81%D1%82%D0%B8&pos=3
_http://site.ru/?type=web&search=%D0%90%D0%B2%D1%82%D0%BE%D0%BD%D0%BE%D0%B2%D0%BE%D1%81%D1%82%D0%B8&pos=4
_http://site.ru/?type=web&search=%D0%90%D0%B2%D1%82%D0%BE%D0%BD%D0%BE%D0%B2%D0%BE%D1%81%D1%82%D0%B8&pos=5

отображались примерно так:

_http://site.ru/?search=xe0xe2xf2xeexedxeexe2xeexf1xf2xe8&type=web
_http://site.ru/?type=web&search=xe0xe2xf2xeexedxeexe2xeexf1xf2xe8&pos=2
_http://site.ru/?type=web&search=xe0xe2xf2xeexedxeexe2xeexf1xf2xe8&pos=3
_http://site.ru/?type=web&search=xe0xe2xf2xeexedxeexe2xeexf1xf2xe8&pos=4
_http://site.ru/?type=web&search=xe0xe2xf2xeexedxeexe2xeexf1xf2xe8&pos=5

Или как-то по другому транслитировались в латиницу.
Заранее спасибо.
цитата
29/03/08 в 12:47
 _s_[sov]
не знаю как в htacces а вот в php есть функция Код:
urldecode();
цитата
29/03/08 в 13:03
 violar
_s_[sov] писал:
не знаю как в htacces а вот в php есть функция Код:
urldecode();


Функция в РНР такая может быть и есть, да вот я, к сожалению огромному, не программист.

А вот в htacces точно как-то можно, и и это для меня конечно же было бы много проще.
цитата
29/03/08 в 13:07
 _s_[sov]
violar писал:
Функция в РНР такая может быть и есть, да вот я, к сожалению огромному, не программист.

А вот в htacces точно как-то можно, и и это для меня конечно же было бы много проще.


Код:

<?
echo urldecode("http://site.ru/?search=%D0%90%D0%B2%D1%82%D0%BE%D0%BD%D0%BE%D0%B2%D0%BE%D1%81%D1%82%D0%B8&type=web
");
?>
цитата
29/03/08 в 14:00
 violar
_s_[sov] писал:
Код:

<?
echo urldecode("http://site.ru/?search=%D0%90%D0%B2%D1%82%D0%BE%D0%BD%D0%BE%D0%B2%D0%BE%D1%81%D1%82%D0%B8&type=web
");
?>


Это шутка или как? Я же сообщал выше, что это типа поискового сервиса. Следовательно, после каждого поискового запроса в адресной строке броузера будет возникать соответствующий ему УРЛ. И что Вы предлагаете? На каждый такой возможный УРЛ писать код его персонального декодирования? И как предвидеть, что именно будут искать и, соответственно, какие УРЛы декодировать? И главное - сколько их будет?

Через htaccess это как-то можно сделать практически одной строчкой через Rewrite. Ниже привожу подобное, но для других скриптов:

RewriteEngine On
RewriteRule search_(.*)_page_(.*)\.html index.php?s=y&search=$1&complete=1&page=$2&sa=N [L]
цитата
29/03/08 в 17:40
 Corex
Цитата:
RewriteEngine On
RewriteRule search_(.*)_page_(.*)\.html index.php?s=y&search=$1&complete=1&page=$2&sa=N [L]

Это немного другой редирект, в приведённом примере запрос страницы вида search_money_page_287.html передаётся скрипту index.php с установкой переменных, где переменные search=money, а page=287 получают данные из псевдо-урла. Т.е. это просто реврайт запроса, без обработки его данных.

Средствами mod_rewrite перевести запрос в латиницу не получится, _s_[sov]: написал в принципе верное решение - сначала нужно декодировать УРЛ, т.е. получить из "%D0%90%D0%B2%D1%82%D0%BE%D0%BD%D0%BE%D0%B2%D0%BE%D1%81%D1%82%D0%B8" -> "Автоновости", а потом уже из кирилицы перевести в латиницу, средствами PHP или другого серверного языка и сделать редирект через, например Header в PHP или location в JS и т.д.
цитата
01/04/08 в 22:15
 violar
Corex писал:
т.е. получить из "%D0%90%D0%B2%D1%82%D0%BE%D0%BD%D0%BE%D0%B2%D0%BE%D1%81%D1%82%D0%B8" -> "Автоновости"


Ясненько. Тогда другой вопрос. А можно ли сделать скрипт, который делал бы наоборот. Т.е приобразовывал бы строки слов и фраз из списка. Например вот такой набор фраз:

ключевая фраза
поисковый запрос
поиск сайта


переделывал бы вот в такое:

search=%D0%BA%D0%BB%D1%8E%D1%87%D0%B5%D0%B2%D0%B0%D1%8F+%D1%84%D1%80%D0%B0%D0%B7%D0%B0&type=web
search=%D0%BF%D0%BE%D0%B8%D1%81%D0%BA%D0%BE%D0%B2%D1%8B%D0%B9+%D0%B7%D0%B0%D0%BF%D1%80%D0%BE%D1%81&type=web
search=%D0%BF%D0%BE%D0%B8%D1%81%D0%BA+%D1%81%D0%B0%D0%B9%D1%82%D0%B0&type=web
цитата
02/04/08 в 06:40
 Corex
Можно, на ПХП очень просто:

Код:
<?php
$keyword = "ключевая фраза";
$keyword = urlencode($keyword);
echo "search=$keyword&type=web";
?>


На жаваскрипт немного проблемнее:

Код:
<html>
<body>

<script language="JavaScript">
<!--

var trans = [];
for (var i = 0x410; i <= 0x44F; i++)
{
   trans[i] = i - 0x350;
}
trans[0x401] = 0xA8;
trans[0x451] = 0xB8;
var escapeOrig = window.escape;

window.escape = function(str)
{
   var ret = [];
   for (var i = 0; i < str.length; i++)
   {
      var n = str.charCodeAt(i);
      if (typeof trans[n] != 'undefined')
      {
         n = trans[n];
      }
      if (n <= 0xFF)
      {
         ret.push(n);
      }
   }
   return escapeOrig(String.fromCharCode.apply(null, ret));
}

document.write("search=" + escape("ключевая фраза") + "&type=web");

//-->
</script>

</body>
</html>
цитата
02/04/08 в 10:52
 violar
Corex писал:
Можно, на ПХП очень просто:

Код:
<?php
$keyword = "ключевая фраза";
$keyword = urlencode($keyword);
echo "search=$keyword&type=web";
?>




Почему-то как-то не так кодирует. Для примера попробовал с фразой "ищем сайты". Ваш скрипт выполнил таким образом:


search=%E8%F9%E5%EC+%F1%E0%E9%F2%FB&type=web


А вот мой поисковик в адресной строке выдает другое:

search=%D0%B8%D1%89%D0%B5%D0%BC+%D1%81%D0%B0%D0%B9%D1%82%D1%8B&type=web

И еще... Мне нужно, чтобы кодировал не по одной фразе, а сразу все из списка (по одной в строке). Например из txt-файла. Выше я привел пример из трех фраз, как это должно быть.
цитата
02/04/08 в 13:12
 _s_[sov]
а что циклы отменили?
пихаешь в файл урлы и кодируешь все скриптом, если не можешь сам то стукнись в асю - помогу чем смогу.
цитата
02/04/08 в 14:44
 violar
_s_[sov] писал:
а что циклы отменили?


Я к сожалению не программист, поэтому и открыл этот топик.

_s_[sov] писал:
пихаешь в файл урлы и кодируешь все скриптом


1. Мне нужно кодировать не урлы, а поисковые запросы. А уж после этого на их кодированной основе я сам сделаю УРЛы и html-ссылки.

2. Я сообщил, что предложенный скрипт кодирует не так, как это выводится в моем поисковике. А мне нужно, чтобы кодировка выполнялась именно так, как это делает поисковик. Ниже видно, в чем разница.

Цитата:

Тестовую фразу "ищем сайты" предложенный выше скрипт выполнил таким образом:

search=%E8%F9%E5%EC+%F1%E0%E9%F2%FB&type=web

А вот мой поисковик в адресной строке выдает другое:

search=%D0%B8%D1%89%D0%B5%D0%BC+%D1%81%D0%B0%D0%B9%D1%82%D1%8B&type=web


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


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