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

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



Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
А, забыл спросить: что за ServerAlias и как его делать? Пишет "Internal Server Error"

Всего записей: 258 | Зарегистр. 10-04-2002 | Отправлено: 14:50 04-03-2006
dacuan

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

Цитата:
Пишет "Internal Server Error"

 
Значит ошибка в синтаксисе .htaccess .
Посмотри в Log'е ошибок, может там есть подсказка. Если нет, то отключай строки, пока не найдешь ту, что глючит.
 

Цитата:
что за ServerAlias и как его делать

ServerAlias Это псевдоним сервера. Он уакзывает апачу, что при запросе к хосту directory.site.com он должен обрабатывать его как site.com. Прописывается в httpd.conf в секци VirtualHost.
 
Если ServerAlias не указан, то Апач просто не будет знать куда перенаправить запрос.

Всего записей: 545 | Зарегистр. 23-10-2003 | Отправлено: 15:03 04-03-2006
Danil Lab



Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Подскажите как правельно преобразовать урл вида
http://localhost/view.php?dir=./image/128x160/logo/&list=2
к виду
http://localhost/image/128x160/2/
/image/128x160/ - dir (каталогф)
/2/ - list (страница)

Всего записей: 269 | Зарегистр. 12-06-2005 | Отправлено: 21:41 04-03-2006
Cheery



.:МордератоР:.
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Danil Lab
а самому сначала попробовать?  
подсказка.. переменная QUERY_STRING


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

Всего записей: 52737 | Зарегистр. 04-04-2002 | Отправлено: 00:55 05-03-2006
Danil Lab



Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Cheery
Я именно через неё и сделал ,Имхо это криво.
 
Хочу сделать через .htaccess с mod_rewrite.
Только вот не получается, т.к. параметр dir может и /1/2/3/4 так и /1/ быть тоесть не фиксирован.

Всего записей: 269 | Зарегистр. 12-06-2005 | Отправлено: 05:56 05-03-2006
Cheery



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

Цитата:
Имхо это криво.  
 
Хочу сделать через .htaccess с mod_rewrite.  

ну и ?? чем не устраивает %{QUERY_STRING} в htaccess???

Цитата:
Только вот не получается, т.к. параметр dir может и /1/2/3/4 так и /1/ быть тоесть не фиксирован.

и?

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

Всего записей: 52737 | Зарегистр. 04-04-2002 | Отправлено: 06:01 05-03-2006
Danil Lab



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

Цитата:
ну и ?? чем не устраивает %{QUERY_STRING} в htaccess???

Я подумал в .php
 
 
Вот пример не полностью рабочего варианта, помогите дописать.

Код:
 
RewriteEngine on
RewriteBase /
RewriteRule ^view/?(.*)/(.*) shop.php?p=$1&r=$2
 

 
при запросе http://localhost/view/100/10/1
только вод если есть в каталоге view.php  то возвращает p=.php/100/10 и r=1
 
при запросе http://localhost/view/100/10/1/
возвращает p=/100/10/1 и r=
 
по идее должно возвратить p=/100/10/  r=1

Всего записей: 269 | Зарегистр. 12-06-2005 | Отправлено: 15:56 05-03-2006
Cheery



.:МордератоР:.
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Danil Lab
ты определенно не хочешь напрягать голову..а это полезно, между прочим..
 
RewriteBase /  
RewriteRule ^view/(.*/.*)/(.*) shop.php?p=$1&r=$2  
ps: не проверял

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

Всего записей: 52737 | Зарегистр. 04-04-2002 | Отправлено: 22:03 06-03-2006
Church



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Народ, уже который день бьюсь над проблемой - не могу решить...
В общем, требуется из ссылки вида:
http://myscript.com/http://google.com?q=query&bla-bla-bla
получить этот http://google.com?q=query&bla-bla-bla
 
Денверовский пакет - выдаёт ошибку доступа, linux-сервера выдают:
http:/google.com
 
Нужно такое:
http://safeURL.de/http://forum.ru-board.com/topic.cgi?forum=31&topic=8134&start=40
 
Как решить проблему?

Всего записей: 1199 | Зарегистр. 05-09-2003 | Отправлено: 13:06 07-03-2006
Danil Lab



Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Cheery
Пришлось напреч мозги
 
вот что получилось.
 
RewriteEngine on
RewriteBase /  
RewriteRule ^view/(.*)/([0-9]{1,2}) shop.php?p=$1&r=$2
 
ps: Проверял работает
 
Добавлено:
А вот под мою цель не полностью подходит )
 
http://localhost/view/logos/12 - все правельно папка view/logos/ , страница 12
 
обращяюсь к файлу http://localhost/view/logos/0035.gif - в место того чтоб выдать содержимое, он обрабатывается как страница 00
 
Как правbльно поступить?

Всего записей: 269 | Зарегистр. 12-06-2005 | Отправлено: 17:09 07-03-2006 | Исправлено: Danil Lab, 17:38 07-03-2006
Church



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

Цитата:
Как правbльно поступить?


Код:
 
RewriteEngine on  
RewriteBase /    
RewriteRule ^view/(.*)/([0-9]+) shop.php?p=$1&r=$2  
 


Всего записей: 1199 | Зарегистр. 05-09-2003 | Отправлено: 18:14 07-03-2006
Danil Lab



Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Church
это я знаю, но мне надо чтоб показалась картинка http://localhost/view/logos/0035.gif

Всего записей: 269 | Зарегистр. 12-06-2005 | Отправлено: 20:56 07-03-2006
Cheery



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

Цитата:
А вот под мою цель не полностью подходит )  

ну так пиши их сразу и полностью
RewriteEngine on  
RewriteBase /  
RewriteCond %{REQUEST_FILENAME} !-d  
RewriteCond %{REQUEST_FILENAME} !-f    
RewriteRule ^view/(.*)/([0-9]{1,2}) shop.php?p=$1&r=$2  


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

Всего записей: 52737 | Зарегистр. 04-04-2002 | Отправлено: 21:08 07-03-2006
Flexner

Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Всем доброго времени!
Так вопрос...
Есть 3 форума с url вот такого вида
_http://www.site.url/?forum=forum1
_http://www.site.url/?forum=forum2
_http://www.site.url/?forum=forum3
Как сделать из них url с поддоменами? т.е.
_http://forum1.site.url
_http://forum2.site.url
_http://forum3.site.url

Всего записей: 469 | Зарегистр. 15-03-2003 | Отправлено: 11:19 28-03-2006
Brodyaga



Silver Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Этот вопрос не решается только mod_rewrite, как мне дали понять в аналогичной теме.


----------
Damn Metal

Всего записей: 2713 | Зарегистр. 07-01-2006 | Отправлено: 14:09 28-03-2006
dacuan

Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Flexner
Создай для своего хота три псевдонима (ServerAlias):
forum1.site.url  
forum2.site.url  
forum3.site.url
 
И напиши такое правило:

Код:
 
RewriteCond %{HTTP_HOST}  ^forum1\.
RewriteRule (.*)    /?forum=forum1
 
RewriteCond %{HTTP_HOST}  ^forum2\.
RewriteRule (.*)    /?forum=forum2
 
RewriteCond %{HTTP_HOST}  ^forum3\.
RewriteRule (.*)    /?forum=forum3
 
 

 
Не проверял, но примерно так.

Всего записей: 545 | Зарегистр. 23-10-2003 | Отправлено: 15:15 28-03-2006
Flexner

Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
dacuan
Не работает The server encountered an internal error or misconfiguration and was unable to complete your request.

Всего записей: 469 | Зарегистр. 15-03-2003 | Отправлено: 16:13 28-03-2006
dacuan

Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Flexner
Посмотри в error.log на что он ругается

Всего записей: 545 | Зарегистр. 23-10-2003 | Отправлено: 16:21 28-03-2006
Yagovdik

Newbie
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Привет всем!
Господа, очень Нужна помощь.
Нужен какой-то отдельный скрипт, на к-рый мод_реврайтом в корне сайта будут перенаправляться все запросы к любой странице, он будет запросы обрабатывать и потом уже перенаправлять к самой запрошенной странице. Кроме того, надо что-то придумать, чтоб избежать бесконечного цикла - когда обработчик перенаправляет к целевой странице - не надо, чтоб реврайт сработал снова, и опять вызывал обработчик по второму разу, итд..
 
Рассмотрю и проверю любые варианты, а то уже 2-ю неделю над этим бьюсь.

Всего записей: 8 | Зарегистр. 10-04-2006 | Отправлено: 10:31 11-04-2006
Cheery



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

Цитата:
Нужен какой-то отдельный скрипт

так все же, что он должен делать?  
 
Ты писал, что логи апача не устраивают - чем же?

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

Всего записей: 52737 | Зарегистр. 04-04-2002 | Отправлено: 18:39 11-04-2006
Открыть новую тему     Написать ответ в эту тему

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