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

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

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

Код:
 
RewriteCond %{REQUEST_URI}  !^img/  
RewriteRule  img/(.*)$  /img/$1 [NS,L]
 

 
тоже бесконечный редирект

Всего записей: 29 | Зарегистр. 03-01-2007 | Отправлено: 14:49 20-07-2011
dacuan

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

Цитата:
тоже бесконечный редирект

Вставляйте лог

Всего записей: 545 | Зарегистр. 23-10-2003 | Отправлено: 15:47 20-07-2011
crimea360

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
dacuan
 
Там проблему решили, добавили слешы.
 
Тут другая проблемма. Надо символ пробела заменить на дефис.
 
Например /temp/test%20page на /temp/test-page

Всего записей: 29 | Зарегистр. 03-01-2007 | Отправлено: 10:34 21-07-2011
dacuan

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

Цитата:
Тут другая проблемма. Надо символ пробела заменить на дефис.

а зачем это делать mod_rewrite'ом?

Всего записей: 545 | Зарегистр. 23-10-2003 | Отправлено: 11:10 21-07-2011
crimea360

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
dacuan
 
Потому что в движек никто лезть не хочет... Пришлось залезть -)))

Всего записей: 29 | Зарегистр. 03-01-2007 | Отправлено: 12:25 21-07-2011 | Исправлено: crimea360, 12:56 21-07-2011
gidrosoldat



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Доброе время суток, господа програмисты )
Вопрос по существу - как включить ЧПУ в Kohana?
Kohana у меня открывается по линку http://kohana/. Версия Kohana PHP Framework, version 3.1 (release)
Делаю так:
1). Переименовываю example.htaccess в .htaccess
Содержимое .htaccess:
------------------------------------------------
# Turn on URL rewriting
RewriteEngine On
 
# Installation directory
RewriteBase /
 
# Protect hidden files from being viewed
<Files .*>
    Order Deny,Allow
    Deny From All
</Files>
 
# Protect application and system files from being viewed
RewriteRule ^(?:application|modules|system)\b.* index.php/$0 [L]
 
# Allow any files or directories that exist to be displayed directly
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
 
# Rewrite all other URLs to index.php/URL
RewriteRule .* index.php/$0 [PT]

------------------------------------------------
2). В bootstrap.php устанавливаю:
 
Kohana::init(array( 'base_url' => '/', 'index_file' => '' ));
 
3). В апаче модуль Rewrite включен
httpd.conf
LoadModule rewrite_module modules/mod_rewrite.so - раскомментированно
 
Пробую запускать http://kohana/welcome/ и получаю:
 
Not Found
The requested URL /welcome/ was not found on this server.
 
Если делаю http://kohana/index.php/welcome/ все работает.
Как избавиться от этого index.php в URL?

Всего записей: 34 | Зарегистр. 24-02-2011 | Отправлено: 19:42 25-07-2011
substrackto

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Попробуй поправь последнюю строчку
Цитата:
RewriteRule (.*) /index.php/$0 [PT]

 
Если не пойдет закомменть
Цитата:
#RewriteRule ^(?:application|modules|system)\b.* index.php/$0 [L]  
и
#RewriteCond %{REQUEST_FILENAME} !-f
#RewriteCond %{REQUEST_FILENAME} !-d  

 

Всего записей: 93 | Зарегистр. 25-10-2007 | Отправлено: 01:27 26-07-2011 | Исправлено: substrackto, 01:29 26-07-2011
gidrosoldat



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
substrackto
не помог, ни первый вариант, ни второй.

Всего записей: 34 | Зарегистр. 24-02-2011 | Отправлено: 08:28 26-07-2011
gidrosoldat



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
По поводу моей проблемы с ЧПУ в Kohana. Методом тыка обнаружил, что не выполняется .htaccess. Добавил в httpd.conf AllowOverride All и Options FollowSymLinks - все заработало.

Всего записей: 34 | Зарегистр. 24-02-2011 | Отправлено: 21:46 27-07-2011
blacks2

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Удалено.
Извините за беспокойство.

Всего записей: 2 | Зарегистр. 06-05-2007 | Отправлено: 17:09 30-07-2011 | Исправлено: blacks2, 22:10 30-07-2011
DmitrySU



Newbie
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Здравствуйте Уважаемые!
Помогите пожалуйста...
необходимо преобразование
http://site.ru/index.php?option=com_content&view=article&id=49&Itemid=57
в http://site.ru/content/view/49/57/
 
есть вот такая конструкция в .htaccess
 
RewriteEngine On
 
RewriteBase /
 
RewriteCond %{QUERY_STRING} ^option=com_content&view=article&id=([0-9]+)&Itemid=([0-9]+)$
RewriteRule ^index\.php?$ http://site.ru/content/view/%1/%2/? [L,R=301]
 
при обращении к http:/site.ru/index.php?option=com_content&view=article&id=49  
в адресной строке выдает http://sitet.ru/content/view/49/57/, как хотелось, а содержимое главной страницы.... http://site.ru
 
Буду премного благодарен за помощь.

Всего записей: 15 | Зарегистр. 20-09-2008 | Отправлено: 19:00 25-08-2011
dacuan

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

Всего записей: 545 | Зарегистр. 23-10-2003 | Отправлено: 19:34 25-08-2011
DmitrySU



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

Цитата:
 Если вы пишите форумы, сайт с новостями или любой сайт в котором есть конструкция 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 страничку.
 

 
Вот именно это я имел в виду.

Всего записей: 15 | Зарегистр. 20-09-2008 | Отправлено: 03:51 26-08-2011
dacuan

Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
DmitrySU
Описание говорит о том,что с помощью mod_rewrite можно заменить адреса вида hттp://mybestsite.com/article.php?n=3&page=1 на hттp://mybestsite.com/articles/3/page1.htm, но в нем не сказано, что не потребуется ничего менять в шаблонах.

Всего записей: 545 | Зарегистр. 23-10-2003 | Отправлено: 11:10 26-08-2011
DmitrySU



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

Цитата:
С использованием mod_rewrite можно на лету преобразовывать адреса типа
 
Код:
hттp://mybestsite.com/article.php?n=3&page=1
 
в такой, более понятный и привычный для обыкновенных пользователей
 
Код:
hттp://mybestsite.com/articles/3/page1.htm  

Вот именно об этом разговор.
Если что-то нужно менять в шаблонах, что приведет к желаемому результату, ткните пожалуйста носом (только не сильно ), буду пытаться...
Просто точно такая же ситуация была на CMS Joostina, там обошлось правилами в htaccess. В моем случае, на Joomla - не помогает...

Всего записей: 15 | Зарегистр. 20-09-2008 | Отправлено: 11:56 26-08-2011
dacuan

Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
DmitrySU
Ок, объясню на пальцах. Открываем перевод официальной документации, та, что в шапке обозначена как «Полная документация, но мне показалась сухой, мало полезных и главное наглядных примеров», и читаем о возможностях и особенностях работы mod_rewrite.
 
Если в двух словах, то mod_rewrite — это просто набор правил по преобразованию URL'ов. И с его помощью можно создать «виртуальные» страницы, которые красиво смотрятся, любят поисковики и т.д. И вот эти красивые URL mod_rewrite преобразовывает в физические адреса скриптов.
 
Т.е. на вход mod_rewrite получает «виртуальный» URL вида hттp://mybestsite.com/articles/3/page1.htm и преобразовывает его в реальный hттp://mybestsite.com/article.php?n=3&page=1.
 
Отсюда можно наметить план работ по переводу сайта на красивые URL:
1. Пишем правила mod_rewrite для преобразования виртуальных URL'ов в реальные.
2. Во всех шаблонах все ссылки на старые реальные URL'ы заменяем на новые красивые виртуальные.

Всего записей: 545 | Зарегистр. 23-10-2003 | Отправлено: 14:39 26-08-2011
DmitrySU



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

Всего записей: 15 | Зарегистр. 20-09-2008 | Отправлено: 15:13 26-08-2011
Tstf



Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Суть такова. На некоторых хостингах работает следующая строка отлично, на некоторых - 500 ошибка.
 
Вот строка
 

Код:
RewriteRule ^catalogue/search/([0-9]*)/([0-9]*)/([a-zA-Z_-]*)/([a-zA-Z_-]*)/~search=([^/]*)(/?)+$ index.php?do=catalogue&act=search&st=$1&page=$2&view=$3&show=$4&search_title=$5 [L]

 
Почему такое может быть? Похоже проблема с символом "~"

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

Всего записей: 788 | Зарегистр. 22-04-2003 | Отправлено: 10:50 03-09-2011
Cheery



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

Цитата:
Похоже проблема с символом "~"

лог ошибок посмотрите и узнаете с чем связана 500 ошибка.

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

Всего записей: 52737 | Зарегистр. 04-04-2002 | Отправлено: 11:04 03-09-2011
Tstf



Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Cheery
 
 
Судя по записи в журнале ошибок:
"12606" [Sat Sep  3 17:27:26 2011] [alert] [client 91.189.112.7]
/www/onlypric/www/htdocs/.htaccess: RewriteRule: cannot compile regular
expression
'^goods/(.*)/([0-9]*)/([0-9]*)/([a-zA-Z_-]*)/([a-zA-Z_-]*)/DESC/?+$'\n
 
ошибка возникла в файле .htaccess в записи правил перенаправления.

Всего записей: 788 | Зарегистр. 22-04-2003 | Отправлено: 18:45 03-09-2011 | Исправлено: Tstf, 18:52 03-09-2011
Открыть новую тему     Написать ответ в эту тему

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