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

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в 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
molekyla



Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
а силил 10 страниц - больше не смог) чуть мозг не взорвался)
вопрос простой - на ibresource порекомендовали сюда обратиться!
 
Как на IPB 2.3.5 перенаправить все исходящие ссылки.
У меня есть свой скрипт для обработки исходящих ссылок go.php (вызываеться просто /click?http://www.site.com)
 
как на форуме отреврайтитьь все исходящие ссылки  типа
http://www.site.com
на  
/click?http://www.site.com
 
 
спасибо!

Всего записей: 3 | Зарегистр. 13-01-2006 | Отправлено: 13:07 29-12-2009
substrackto

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
molekyla
Мне кажется, что к мод_р это никакого отношения не имеет, вам нужно править пхп где преобразовываются бб теги в хтмл.
Если я правильно понял: [_url]http://site.com[/url] -> <a href="/click?http://site.com" />

Всего записей: 93 | Зарегистр. 25-10-2007 | Отправлено: 14:32 29-12-2009 | Исправлено: substrackto, 14:34 29-12-2009
israel_rider

Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Маленький вопрос, плиз. Что означает
$1
? Везде написано, что $ это конец строки шаблона. Тогда что же такое 1? Количество повторений? Типа - шаблон только один раз может повториться?
Привожу целиком всю строчку -  
RewriteRule ^(.*)\.htm$ $1.php    [NC]

Всего записей: 925 | Зарегистр. 28-07-2007 | Отправлено: 22:34 12-01-2010 | Исправлено: israel_rider, 22:38 12-01-2010
andead



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
"$1.php" это уже не регулярное выражение, $1 это первая найденная подстрока соответствующая — (.*)

----------
мой блог

Всего записей: 1821 | Зарегистр. 22-09-2005 | Отправлено: 22:49 12-01-2010
israel_rider

Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Спасибо!

Всего записей: 925 | Зарегистр. 28-07-2007 | Отправлено: 22:57 12-01-2010
Tstf



Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Добрый день. Вопрос слеюущий.
 
есть ЧПУ вида
http://localhost/fmnokia_8/goods/mobile/1/1/norm/all  
 
хочу передать переменную ещё  
brand[]  
 
можно ли записать как-то так  
 
http://localhost/fmnokia_8/goods/mobile/1/1/norm/all/~brand[]=6  ?  
Просто когда так записываю, то вообще 404 ошибка.
 
 
Для чпу  
 
RewriteRule ^goods/([a-zA-Z_-]*)/([0-9]*)/([0-9]*)/([a-zA-Z_-]*)/([a-zA-Z_-]*)(/?)+$ index.php?do=goods&id_s=$1&st=$2&page=$3&view=4&show=$5 [L]  
 
Спасибо.

----------
Заработок 2.0

Всего записей: 788 | Зарегистр. 22-04-2003 | Отправлено: 10:23 23-01-2010
Tstf



Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
должно же быть решение) Я уже неделю борюсь :>

----------
Заработок 2.0

Всего записей: 788 | Зарегистр. 22-04-2003 | Отправлено: 22:05 26-01-2010
Cheery



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


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

Всего записей: 52737 | Зарегистр. 04-04-2002 | Отправлено: 22:08 26-01-2010
Tstf



Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
экранизирование не спасается... во-первых надо определиться что писать после ЧПУ
 
http://localhost/fmnokia_8/goods/mobile/1/1/norm/all/~brand=6
 
знак ~ ?
 
но даже с этим знаком переменная $_REQUEST['brand'] пуста
 
 

Цитата:
либо включите логирование преобразования запроса и смотрите

что за логирование?)

----------
Заработок 2.0

Всего записей: 788 | Зарегистр. 22-04-2003 | Отправлено: 17:37 27-01-2010
Cheery



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

Цитата:
что за логирование?)

http://httpd.apache.org/docs/2.0/mod/mod_rewrite.html#rewritelog

Цитата:
знак ~ ?  

нет, скобки []

Цитата:
но даже с этим знаком переменная $_REQUEST['brand'] пуста  

а почему она должна определиться???

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

Всего записей: 52737 | Зарегистр. 04-04-2002 | Отправлено: 20:30 27-01-2010
Kas07



Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Помогите, плиз. Второй вечер мучаюсь.
 
Оригинальный урл http://www.qqqqqq.com/new_site/?s=40&brand=7
в ЧПУ чтоб был http://www.qqqqqq.com/new_site/section40/?brand=7
 
Правило RewriteRule ^section([^/]*)/?brand=([^/]*)$ ?s=$1&brand=$2 [L] не работает

Всего записей: 6 | Зарегистр. 26-07-2006 | Отправлено: 21:04 27-01-2010
Cheery



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

Цитата:
RewriteRule ^section([^/]*)/?brand=([^/]*)$  

query не обабатывается так.. доп rewritecond на %{QUERY_STRING}
что то вида
RewriteCond %{QUERY_STRING} ^s=([0-9]+)&brand=([0-9]+)$
RewriteRule ^new_site /new_site/section%1/?brand=%2 [L]  
 
или вам наоборот?
RewriteCond %{QUERY_STRING} ^brand=([0-9]+)$
RewriteRule ^new_site/section([0-9]+)/$ /new_site/?s=$1&brand=%1 [L]  


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

Всего записей: 52737 | Зарегистр. 04-04-2002 | Отправлено: 21:42 27-01-2010 | Исправлено: Cheery, 21:55 27-01-2010
usertum



Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Подскажите пожалуйста по редиректу:
 
Redirect /sys/user.php?sid=ЛЮБОЕ ЗНАЧЕНИЕ&r=500 /sus/user.php
 
Как верно прописать что sid может быть любым значением... то есть что бы если есть &r=500 то переключать на url /sus/user.php

Всего записей: 471 | Зарегистр. 01-07-2008 | Отправлено: 21:43 29-01-2010
Cheery



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

Цитата:
Как верно прописать что sid может быть любым значением... то есть что бы если есть &r=500 то переключать на url /sus/user.php

как я написал выше.
RewriteCond %{QUERY_STRING} r=500$
RewriteRule ^sys/user.php  /sus/user.php [L]  
может понадобятся изменения.. попробуйте
порядок на положение r тоже влияет в данной записи

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

Всего записей: 52737 | Зарегистр. 04-04-2002 | Отправлено: 21:50 29-01-2010
usertum



Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Cheery не получилось. Нужно что бы при любом значении sid если есть &r=500 в строке, происходило переключение на url /sus/user.php
 
Добавлено:
sys/user.php  /sys/user.php [L]   вот так у меня, ошибся выше.

Всего записей: 471 | Зарегистр. 01-07-2008 | Отправлено: 22:04 29-01-2010 | Исправлено: usertum, 22:06 29-01-2010
Cheery



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

Цитата:
sys/user.php  /sys/user.php [L]   вот так у меня, ошибся выше.

простите, а в чем смысл пересылать на тот же скрипт??

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

Всего записей: 52737 | Зарегистр. 04-04-2002 | Отправлено: 22:24 29-01-2010
usertum



Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Если есть r=500 то нужно переключить... модифицирую сторонний скрипт и нужно отключить некоторые опции, это самый быстрый вариант.

Всего записей: 471 | Зарегистр. 01-07-2008 | Отправлено: 22:30 29-01-2010
Cheery



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

Цитата:
Если есть r=500 то нужно переключить... модифицирую сторонний скрипт и нужно отключить некоторые опции, это самый быстрый вариант.

 
еще раз.. вы пересылаете на тот же скрипт - зачем???

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

Всего записей: 52737 | Зарегистр. 04-04-2002 | Отправлено: 22:41 29-01-2010
usertum



Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
модифицирую сторонний скрипт и нужно отключить некоторые опции, это самый быстрый вариант без модификаций системы.

Всего записей: 471 | Зарегистр. 01-07-2008 | Отправлено: 22:52 29-01-2010
Cheery



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

Цитата:
модифицирую сторонний скрипт и нужно отключить некоторые опции, это самый быстрый вариант без модификаций системы.

это глупо, если честно..
добавьте одной строкой в скрипт в самом начале
if(isset($_GET['r'])&&$_GET['r']=='500') unset($_GET['r']);
этой же цели добиваетесь?
 
я все равно не понимаю что вы пытаетесь сделать.

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

Всего записей: 52737 | Зарегистр. 04-04-2002 | Отправлено: 22:56 29-01-2010
Открыть новую тему     Написать ответ в эту тему

Страницы: 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