Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Интернет » Web-программирование » mod_rewrite: документация, готовые решения, вопросы

Модерирует : Cheery

 Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71

Открыть новую тему     Написать ответ в эту тему

Delphi6



BANNED
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
mod_rewrite

Вот уже несколько раз встретился с этим вопросом. Недавно в тех. задании было указано что проект должен быть оптимизирован под поисковые системы. Поискав немного попал на mod_rewrite. Оказывается что mod_rewrite очень и очень полезная вещь. Вот несколько причин почему я решил разобраться с данным зверем:
 

  1. Если вы пишите форумы, сайт с новостями или любой сайт в котором есть конструкция hттp://mybestsite.com/article.php?n=3&page=1. Вы рано или поздно встретитесь с проблемой лицом к лицу, у таких сайтов есть огромный минус: адрес сайта выглядит для пользователей не "нормально", такой адрес не индексируется многими поисковыми системами, удаляется все после знака "?". Ниже приведенные ссылки для него все одни, но просмотрев их он получает разное содержимое (Что плохо сказывается на статистику вашего сайта)

    Код:
    hттp://mybestsite.com/article.php?n=3&page=1
    hттp://mybestsite.com/article.php?n=5&page=2
    hттp://mybestsite.com/article.php?n=6&page=7

    Пользователи у которых нету базовых знаний в Web программировании не могут понять что значит текст после article.php (?n=3&page=1). С использованием mod_rewrite можно на лету преобразовывать адреса типа

    Код:
    hттp://mybestsite.com/article.php?n=3&page=1

    в такой, более понятный и привычный для обыкновенных пользователей

    Код:
    hттp://mybestsite.com/articles/3/page1.htm

    А самое интересное что файл page1.htm вообще не существует, и пользователю не известен путь к файлу к которому он обращается и поисковые системы воспринимают такой адрес как обыкновенную ссылку на html страничку.
     
  2. С помощью mod_rewrite можно запретить скачивать ваши материалы с других сайтов, на собирание которых вы провели бессонные ночи. Например: у вас есть файл bestprogram.zip, у вас на страничке есть линк

    Код:
    <a href="hттp://mybestsite.com/download/bestprogram.zip">Download</a>

    какой-то придурок залазит на ваш сайт, просмотривает html код вашей странички и размещает туже ссылку но уже у себя на сайте.

    Код:
    <a href="hттp://mybestsite.com/download/bestprogram.zip">Download</a>

    и она будет работать без проблем, за трафик будет платить вы а слава и благодарности этому придурку! С помощью mod_rewrite можно запретить cкачивание файлов если referer не ваш сайт

 
Думаю этого достаточно что бы потратить несколько часов на изучение данного материала. Ниже привожу документацию по данному вопросу:
Русские ресурсы

Английские ресурсы

 
Необходимые навыки:

 
Настройка журналирования (Лога):
 
Чтобы включить лог mod_rewrite необходимо в описании вашего виртуального хоста (обычно это файл httpd.conf) добавить две строчки:  

Код:
Код:RewriteLog /путь/к/лог/файлу  
RewriteLogLevel 9  

И перезапустить апача. Крайне не рекомендуется производить это на работающем сервере, так как объемы отладочной информации генерируются действительно большие и найти свое бывает очень сложно.
 
ps: Доп ссылки
Много полезных примеров, но на английском http://www.askapache.com/htaccess/mod_rewrite-tips-and-tricks.html




PHP тут не совсем к месту в названии, потому убрал /Cheery/

Всего записей: 2631 | Зарегистр. 06-07-2004 | Отправлено: 15:26 24-06-2005 | Исправлено: Cheery, 01:07 11-10-2011
Givens

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
использую mod_rewrite на сайте с довольно большим количеством различным ссылок.
Скажите, это нормально когда поисковые системы начинают обрабатывать зацикленные ссылки формата
site/news/10/pages/1/online/users/ и т.п.
когда данные ссылки прописаны по отдельности как  
news/10/
pages/1
online/
users/
и т.п.

Всего записей: 3 | Зарегистр. 29-06-2012 | Отправлено: 15:14 29-06-2012
dacuan

Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Givens
нет, это не нормально. у вас где-то в шаблонах формируются ссылки с ошибкой и неправильно настроен mod_rewrite

Всего записей: 545 | Зарегистр. 23-10-2003 | Отправлено: 21:13 02-07-2012 | Исправлено: dacuan, 21:25 02-07-2012
Givens

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
dacuan
Вы имеете в виду настройку на сервере, или речь идет о правильном оформлении файла htaccess?
на сайте у меня прописан base href а ссылки имеют вид href="news/", href="online/", ..="users/"

Всего записей: 3 | Зарегистр. 29-06-2012 | Отправлено: 02:52 03-07-2012 | Исправлено: Givens, 02:52 03-07-2012
dacuan

Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Givens

Цитата:
Вы имеете в виду настройку на сервере, или речь идет о правильном оформлении файла htaccess?

Оформлении файла .htaccess
 

Цитата:
на сайте у меня прописан base href

возможно, по какой-то из причин некоторые поисковики не воспринимают ваш base href

Всего записей: 545 | Зарегистр. 23-10-2003 | Отправлено: 10:56 03-07-2012
apacen



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Здравствуйте,  
недавно обнаружил, что гугл и яндекс бот начали стучаться на страницы сайта с добавлением в конце пробела, например:  
www.example.ru/news/%20  
естественно ему выдается 404 ошибка.  
Проверил сайт на битые ссылки xenu, так и не на шел откуда он берет такие пути.  
Ссылок довольно много.  
Как нужно прописать редирект в файле .htaccess, чтобы преобразовать страницу с пробелами в нормальную, т.е. следуя из примера:  
www.example.ru/news  
?
 
 
В итоге сделал так:
RewriteRule ^(.*)\ $ http://www.example.ru/$1 [R=301,L]
вроде работает

Всего записей: 35 | Зарегистр. 10-02-2007 | Отправлено: 14:56 04-07-2012 | Исправлено: apacen, 17:43 04-07-2012
Insomnia22

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Здравствуйте.
Имеется site1.ru и site2.ru.  
 Нужен редирект при переходе с поиска Яндекса, т.е. именно с http://yandex.ru/yandsearch?text=  
 Чтобы при переходе с поиска открывался site2.ru, а с любых других заходов - site1.ru  
 Подскажите, пожалуйста, как это можно сделать, пробовал и в .htaccess прописывать редирект с реферера, и php-код на страницу добавлять - не получается, возможно что-то не так делаю.

Всего записей: 7 | Зарегистр. 16-09-2012 | Отправлено: 20:49 16-09-2012
Cheery



.:МордератоР:.
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Insomnia22

Цитата:
пробовал и в .htaccess прописывать редирект с реферера

пример покажите того, что делали

----------
Away/DND

Всего записей: 52737 | Зарегистр. 04-04-2002 | Отправлено: 20:54 16-09-2012
Insomnia22

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Я пока пробовал делать на примере другого моего сайта хоть какой редирект, всё равно не получилось:
RewriteCond %{REQUEST_URI} !/page1.html
RewriteCond %{HTTP_REFERER} http://мой_сайт_с_которого_перехожу.com [NC]
RewriteRule ^.*$ /page2.html [R=302,L]
 
Про Яндекс вообще молчу, т.к. очевидно что там всё еще сложнее.

Всего записей: 7 | Зарегистр. 16-09-2012 | Отправлено: 21:03 16-09-2012
Cheery



.:МордератоР:.
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Insomnia22
вроде все правильно.. а включать mod rewrite не забываете?
 
выше всего этого добавить  
RewriteEngine On


----------
Away/DND

Всего записей: 52737 | Зарегистр. 04-04-2002 | Отправлено: 21:06 16-09-2012
Insomnia22

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Да, добавлял, забыл сюда написать, ну и + это и так у меня прописано в .htaccess
Может кто-то знает в чем причина? Или как сделать редирект с выдачи яндекса?

Всего записей: 7 | Зарегистр. 16-09-2012 | Отправлено: 21:23 16-09-2012
Cheery



.:МордератоР:.
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Insomnia22

Цитата:
Может кто-то знает в чем причина?

включайте на время логгирование обработки mod_rewrite и смотрите логи
 
по аналогии все, вроде, правильно (не углублялся сильно в ваш код)
mod_rewrite: документация, готовые решения, вопросы

----------
Away/DND

Всего записей: 52737 | Зарегистр. 04-04-2002 | Отправлено: 21:27 16-09-2012
Insomnia22

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Логирование включить нельзя, потому что нету доступа к этому файлу в виртульном хостинге.
Перепробовал еще варианты, не получается.
По-прежнему актуально.

Всего записей: 7 | Зарегистр. 16-09-2012 | Отправлено: 23:00 16-09-2012
Cheery



.:МордератоР:.
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Insomnia22
а вы уверены, что у вас mod_rewrite вообще работает и htaccess читается? сделайте ошибку и посмотрите, будет ли выдаваться 500 ошибка.
 
ps: к тому же проверьте, может ваш файерволл или браузер вырезают реферера

----------
Away/DND

Всего записей: 52737 | Зарегистр. 04-04-2002 | Отправлено: 23:01 16-09-2012 | Исправлено: Cheery, 23:03 16-09-2012
Insomnia22

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
сделайте ошибку и посмотрите, будет ли выдаваться 500 ошибка.

Напишите, пожалуйста, подробнее, как это сделать.

Цитата:
ps: к тому же проверьте, может ваш файерволл или браузер вырезают реферера

Нет.

Всего записей: 7 | Зарегистр. 16-09-2012 | Отправлено: 02:04 17-09-2012
Cheery



.:МордератоР:.
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Insomnia22

Цитата:
Напишите, пожалуйста, подробнее, как это сделать.  

да напишите что хотите в htaccess файле, чушь всякую
если он читается, то это вызовет 500 ошибку сервера, если же не читается сервером, то ничего не будет.

----------
Away/DND

Всего записей: 52737 | Зарегистр. 04-04-2002 | Отправлено: 02:12 17-09-2012
Insomnia22

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Написал, вызвало ошибку.

Всего записей: 7 | Зарегистр. 16-09-2012 | Отправлено: 01:30 18-09-2012
Cheery



.:МордератоР:.
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Insomnia22
да все правильно в записи.. возможно не в тех условиях пробуете.
лучше, все же, умудриться включить логгирование - тогда ясно будет в чем дело.
 


----------
Away/DND

Всего записей: 52737 | Зарегистр. 04-04-2002 | Отправлено: 02:53 18-09-2012
ra1n



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Подскажите как настроить 301 редирект.  
Необходимо установить 301 редирект со страниц вида
http://site.ru/katalog/katalog/
На адреса вида
http://site.ru
 
Примеры страниц, для которых должен выполняться редирект:
http://site.ru/katalog/katalog/razdel1 -> http://site.ru/razdel1
http://site.ru/katalog/katalog/razdel2 -> http://site.ru/razdel2
 
И ещё один тип редиректа надо сделать:
http://site.ru/podrazdel3 -> http://site.ru/razdel3/podrazdel3
 
Это страницы интернет-магазина, нужен не простой редирект, а что бы при запросе к конкретному товару по старому УРЛу, так же срабатывал редирект и открывалась карточка товара с новым УРЛом.
 
Спасибо!

Всего записей: 328 | Зарегистр. 22-12-2006 | Отправлено: 21:51 21-10-2012 | Исправлено: ra1n, 21:54 21-10-2012
JekaRus

Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
ra1n
Такой редирект настраивается в файле .htaccess
Вот пример 301 редиректа
RewriteEngine On
RewriteBase /
RewriteRule ^katalog/katalog/razdel1$ razdel1 [R=301,NC,L]
RewriteRule ^podrazdel3$ razdel3/podrazdel3 [R=301,NC,L]

Всего записей: 1046 | Зарегистр. 10-08-2005 | Отправлено: 13:39 22-10-2012
DJ_Scorp



Newbie
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Здравствуйте, просмотрел здесь много пример, но так  и не удалось разобраться как реализовать следующее:
 
При вводе адреса: http://site.ru/prez?one
чтоб указывало и открывался адрес на: http://site.ru/prez.php?r=one
 
где prez - это несуществующее сокращение указывающее на существующую страницу
и one - сам параметр который должен передаваться в ту страницу
 
Помогите, пожалуйста, реализовать даную штуку, и желательно чтоб если параметра нету, то есть так: http://site.ru/prez, то чтоб открывало просто cfve cnhfybxre http://site.ru/prez.php

Всего записей: 17 | Зарегистр. 06-09-2007 | Отправлено: 18:06 22-10-2012
Открыть новую тему     Написать ответ в эту тему

Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71

Компьютерный форум Ru.Board » Интернет » Web-программирование » mod_rewrite: документация, готовые решения, вопросы


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2024

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru