- Поисковые системы
- Практика оптимизации
- Трафик для сайтов
- Монетизация сайтов
- Сайтостроение
- Социальный Маркетинг
- Общение профессионалов
- Биржа и продажа
- Финансовые объявления
- Работа на постоянной основе
- Сайты - покупка, продажа
- Соцсети: страницы, группы, приложения
- Сайты без доменов
- Трафик, тизерная и баннерная реклама
- Продажа, оценка, регистрация доменов
- Ссылки - обмен, покупка, продажа
- Программы и скрипты
- Размещение статей
- Инфопродукты
- Прочие цифровые товары
- Работа и услуги для вебмастера
- Оптимизация, продвижение и аудит
- Ведение рекламных кампаний
- Услуги в области SMM
- Программирование
- Администрирование серверов и сайтов
- Прокси, ВПН, анонимайзеры, IP
- Платное обучение, вебинары
- Регистрация в каталогах
- Копирайтинг, переводы
- Дизайн
- Usability: консультации и аудит
- Изготовление сайтов
- Наполнение сайтов
- Прочие услуги
- Не про работу
Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий
Слышал много раз, что для поисковые роботы больше любят ссылки вида:
http://domain.ru/razdel/page/3/ чем ссылки вида:
http://domain.ru/razdel.php?id=3
Так вот. Вопрос такой. Как сформировать ссылки 1 типа из ссылок 2 типа? Слышал, что делается это вроде при помощи mod rewrite... Может кто-нибудь объяснить подробнее, или дать ссылку на русский мануал по этому делу.
Упрощенно.
1.Формируем файл .htaccess
RewriteEngine On
Options +FollowSymlinks
RewriteBase /
RewriteRule ^(.*)\.htm$ /htm.php/$1
Теперь все адреса *.htm обрабатываются htm.php
в котором:
$urls = split("/", $rur);
$link= $urls[1] ? $urls[1] : "index";
if (count($urls)>2) {
for($i=1; $i<count($urls); $i++) {
if (eregi("_", $urls[$i])) {
list($par, $value) = explode("_", $urls[$i]);
$$par = $value; }
}}
Разбиваем на папки, причем все папки вида page_1 (для примера) для скрипта получаются как переменные ($page = 1)
если есть QUERY_STRING лучше обработать:
<?
$rurs = $REQUEST_URI;
@list($rur, $qst) = explode("?", $rurs);
if ($qst) {
$qst = urldecode($qst);
$qss = split("&", $qst);
for($i=0; $i<count($qss); $i++) {
list($par, $value) = explode("=", $qss[$i]);
$$par = $value;
}}
?>
Теперь есть массив папок ($urls) (первая - $link) и переменные.
Все 200 или 404.
Конечно второй кусок скрипта дожен быть раньше первого.
Есть ошибки
Возможно, я ошибаюсь, но модуль mod_rewrite дает только психологический эффект. С технической точки зрения, он просто выдает http заголовок Location: <другой адрес>. А значит для робота именно другой адрес и будет тем, который он учтет. А про "красивый" он сразу же забудет, поскольку на нем лишь редирект. Однако не стоит беспокоиться о "любви" и "нелюбви" роботов к строке запроса в URI. Основные роботы уже давно относятся к ним одинаково (maybe, за исключением апорта). Но и апорт не отказывается от динамических адресов - он ограничивает их количество. (Хотя все меняется).
Прошу не воспринимать вышенаписанное, как credo experto, это только IMHO ;)
Lupus, вы действительно ошибаетесь. Все зависит, конечно, от правил перезаписи, но в большинстве случаев получаются дубли страниц с "динамическими" и "статическими" адресами.
http://www.egoroff.spb.ru/portfolio/apache/rewriteguide.html
Руководство по URL преобразованиям
Перевод Apache URL Rewriting Guide в оригинале написанного Ralf S. Engelschall. Этот документ дополняет документацию к mod_rewrite. Он описывает возможности использования mod_rewrite веб-сервера Apache.
http://www.egoroff.spb.ru/portfolio/apache/mod_rewrite.html
Модуль Apache mod_rewrite
Перевод документации Apache по модулю mod_rewrite — реализующему механизм URL преобразований.
Мне только хотелось бы понять, в чем именно моя ошибка: в понимании работы mod_rewrite или в оценке реакции роботов на редирект?
Если дело в первом, вот простейший пример, который я сразу попробовал, по прочтении вашего возражения:
RewriteRule ^([0-9A-Za-z_\-]*\.)shtml$ $1php [P]
GET http://www.system.loc/1.shtml
1 HTTP/1.1 302 Found
2 Date: Mon, 08 Mar 2004 20:47:27 GMT
3 Server: Apache/2.0.40 (Unix)
4 Location: http://www.system.loc/1.php
5 Content-Length: 301
6 Keep-Alive: timeout=7200, max=100
7 Connection: Keep-Alive
8 Content-Type: text/html; charset=iso-8859-1
Location: http://www.system.loc/1.php [following]
И далее клиент делает еще один запрос уже по новому адресу.
В понимании работы mod_rewrite. :)
А зачем там [P] в конце RewriteRule? Оно и вызывает редирект похоже, надо просто [L] там поставить.
для пользователя сервер выдает прямой ответ (без редиректов), а то, что он уже делает внутри определяется Вашими настройками и скриптами ...
иногда помогает просмотр реальных заголовков того, что выдает сервер ;-))
Точно! Теперь апач делает вид, что все 200 :)
Вообще-то я верил, что все не так плохо, но ленился искать хорошее ;)
RTFM, стало быть.
http://www.egoroff.spb.ru/portfolio/apache/rewriteguide.html Руководство по URL преобразованиям
http://www.egoroff.spb.ru/portfolio/apache/mod_rewrite.html
Перевод документации Apache по модулю mod_rewrite
Спасибо за информацию...