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

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



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

Код:
[Wed Apr 25 18:23:39 2012] [alert] [client **.**.**.**] D:/**/www/.htaccess: Invalid command 'RewriteEngine', perhaps misspelled or defined by a module not included in the server configuration

Всего записей: 1150 | Зарегистр. 15-08-2011 | Отправлено: 19:24 25-04-2012
Cheery



.:МордератоР:.
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Sutar
вот вам и ответ  
У вас не подключен модуль mod_rewrite в конфигурации сервера

Цитата:
LoadModule rewrite_module modules/mod_rewrite.so


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

Всего записей: 52737 | Зарегистр. 04-04-2002 | Отправлено: 19:27 25-04-2012
Sutar



BANNED
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Cheery
Где его подключить? в каком файле?

Всего записей: 1150 | Зарегистр. 15-08-2011 | Отправлено: 19:38 25-04-2012
Cheery



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

Цитата:
Где его подключить? в каком файле?

ищите httpd.conf
если у вас какая то сборка с Apache в комплекте, то может и называться иначе

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

Всего записей: 52737 | Зарегистр. 04-04-2002 | Отправлено: 19:40 25-04-2012
Sutar



BANNED
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Cheery
Спасибо большое, всё круто работает))
вот проблемка...
а можно как-то проверять URL?
вот вы мне писали проверку, а теперь она не работает...
можете её доработать?
 
к примеру, доступный URL:
http://site/page=19
а если например сделать так:
http://site/pag1e=19
пишет что не найдена страница... можно сделать, чтоб кидало на главную?

Всего записей: 1150 | Зарегистр. 15-08-2011 | Отправлено: 19:48 25-04-2012
Cheery



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

Цитата:
можете её доработать?

я же сказал, знаков = в URL быть не может, только в аргументах запроса. ваш браузер их перекодирует в URL кодировку
 

Цитата:
можно сделать, чтоб кидало на главную?

вам тогда ВСЕ кидать надо на главную (вернее на index.php) и уже в нем смотреть с чем пришли.

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

Всего записей: 52737 | Зарегистр. 04-04-2002 | Отправлено: 19:51 25-04-2012
Sutar



BANNED
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Cheery
ммм... столько проверок сделано, и не работают...
 
поможете проверки сделать? давайте сюда, чтоб не флудить в этой теме.

Всего записей: 1150 | Зарегистр. 15-08-2011 | Отправлено: 19:54 25-04-2012
Cheery



.:МордератоР:.
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Sutar
зачем?
 
1) не нужно перебрасывать даже неправильные запросы на основную страницу. это плохо для поисковиков + увеличивает нагрузку на сервер
 
2) для переброса всех запросов нужно использовать mod_rewrite, но нужно правильно его написать, чтобы не кидать запросы к картинкам, css и другим статическим файлам
 
3) можете воспользоваться этим, чтобы создавать свои страницы ошибок Apache: .htaccess и страницы ошибок (404.html и др.)
 
отсюда вывод - зачем вы все усложняете?

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

Всего записей: 52737 | Зарегистр. 04-04-2002 | Отправлено: 19:57 25-04-2012 | Исправлено: Cheery, 19:59 25-04-2012
Sutar



BANNED
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Cheery
Просто хочу чтоб всё было корректно)
Мне нужно:
Если если приставка index, index.php, ?, перед page= переходило на страницу без тех приставок.
Если вид page= - переносило на главную страницу.
Если в page= есть ещё приставки, тоесть к примеру page=1&sss=2 - переносило на главную страницу.
 
такое возможно сделать?

Всего записей: 1150 | Зарегистр. 15-08-2011 | Отправлено: 20:00 25-04-2012
Laterport



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Cheery
http://forum.ru-board.com/topic.cgi?forum=31&topic=8134&start=960#17
 
Глянь пожалуйста, в чём может быть дело?
По поводу того что при переходе по ссылке реврайт не корректно отрабатывает.  
Может тут опять причина в параллельном nginx? )

Всего записей: 171 | Зарегистр. 09-02-2012 | Отправлено: 07:06 26-04-2012 | Исправлено: Laterport, 07:07 26-04-2012
Cheery



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

Цитата:
Может тут опять причина в параллельном nginx? )

может быть. я не вижу там ничего, чтобы реагировало на наличие реферера (а только им и определяется разница, либо вы что то не договариваете)

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

Всего записей: 52737 | Зарегистр. 04-04-2002 | Отправлено: 07:30 26-04-2012
Laterport



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Да нет, я всё показал что в конфиге...

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



BANNED
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Cheery
так такое возможно сделать? (что я спросил чуть выше)

Всего записей: 1150 | Зарегистр. 15-08-2011 | Отправлено: 19:52 26-04-2012
Cheery



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

Цитата:
так такое возможно сделать? (что я спросил чуть выше)

зачем вы придумываете то, что вам не понадобится?
да, можно, но у меня сейчас совсем нет времени этим заниматься
 
Laterport

Цитата:
Да нет, я всё показал что в конфиге...

тогда изучайте что отсылает браузер и в каком виде это приходит к апачу

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

Всего записей: 52737 | Зарегистр. 04-04-2002 | Отправлено: 23:11 26-04-2012
Sutar



BANNED
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Cheery
Пожалуйста, можете помочь?
это ну очень нужно... я уже перепробовал 101 вариант, и ничего не работает(

Всего записей: 1150 | Зарегистр. 15-08-2011 | Отправлено: 23:55 26-04-2012 | Исправлено: Sutar, 23:55 26-04-2012
Sutar



BANNED
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Cheery
Осталось сделать:
Если если приставка index, index.php, ?, перед page= переходило на страницу без тех приставок.
и
Если идет строка index.php?и тут что угодно, кроме page= - переносило на главную...

Всего записей: 1150 | Зарегистр. 15-08-2011 | Отправлено: 13:16 28-04-2012
Cheery



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

Цитата:
Если если приставка index, index.php, ?, перед page= переходило на страницу без тех приставок

смотрите в самом index.php строку $_SERVER["REQUEST_URI"], к примеру


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

Всего записей: 52737 | Зарегистр. 04-04-2002 | Отправлено: 19:56 28-04-2012
Sutar



BANNED
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Как сделать период разрешенных символов?
например: name=<>-=}{":
если не преобразовывать с RewriteEngine то всё отлично.
если преобразовать вид URL c помощью RewriteEngine - выходит ошибка Forbidden
тоесть, мне в URL могут задать запрос: http://site.ru/s=da_(DS)*
и с прочими символами, у меня в .htaccess стоит:
 
RewriteRule ^s=([A-z,a-z,A-Z,0-9]+)$ index.php?$1 [NS,L]
 
и у меня происходит ошибка, изза того, что в RewriteRule не разрешены символы ?.\+- и все другие.
вопрос, как их всех разрешить?

Всего записей: 1150 | Зарегистр. 15-08-2011 | Отправлено: 01:02 02-05-2012
Cheery



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

Цитата:
^s=(.+)$

не надоело еще? я еще раз повторю - структура у вас неправильная

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

Всего записей: 52737 | Зарегистр. 04-04-2002 | Отправлено: 01:04 02-05-2012
Sutar



BANNED
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Cheery
Почему не правильная?
я проверил ну просто все символы.
те которые ошибка и не работали, я переделал в закодированную строчку.
после перехода и проверок, я эти строчки раскодирую в тот символ, который под ним закодирован.
например {s20} для меня закодированный символ +
после нажатие на поиск, я заменяю + на {s20} а перед отображением заменяю {s20} на +
и вы можете помочь объяснить, почему у меня "структура" не правильная?

Всего записей: 1150 | Зарегистр. 15-08-2011 | Отправлено: 12:12 02-05-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