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

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

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Подскажите пожалуйста.
Есть два домена на разных серверах у разных хостеров. Необходимо чтобы при запросе файла на Домене1 пользователю выдавался файл физически находящийся на Домене2.
Где то я такое решение встречал, но найти не могу
p.s.: мера временная.  на домене1 закончились дисковые квоты

Всего записей: 83 | Зарегистр. 18-08-2004 | Отправлено: 19:22 22-11-2006
Cheery



.:МордератоР:.
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
batton
http://httpd.apache.org/docs/1.3/mod/mod_alias.html#redirect

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

Всего записей: 52737 | Зарегистр. 04-04-2002 | Отправлено: 19:37 22-11-2006
batton

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

Всего записей: 83 | Зарегистр. 18-08-2004 | Отправлено: 20:48 22-11-2006
Cheery



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

Цитата:
виноват, не совсем корректно объяснил. мне нужно делать не просто редирект. мне нужно чтобы это было непрозрачно для пользователя. то есть в адресной строке - адрес домена1

и сервера у разных хостеров? только mod_proxy + настройки.
реврайтом "незаметно" для пользователя это не сделать.

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

Всего записей: 52737 | Зарегистр. 04-04-2002 | Отправлено: 20:51 22-11-2006
batton

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
что-то типа
RewriteRule    ^foo\.html$  http://domen2/bar.html  
но кажется мне что все не так просто

Всего записей: 83 | Зарегистр. 18-08-2004 | Отправлено: 20:59 22-11-2006
Cheery



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

Цитата:
но кажется мне что все не так просто  

Пробуй..  

Цитата:
RewriteRule ^/somepath(.*) http://otherhost/otherpath$1 [P]

но я неуверен, что без mod_proxy будет работать.. хотя кто знает.

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

Всего записей: 52737 | Зарегистр. 04-04-2002 | Отправлено: 21:05 22-11-2006 | Исправлено: Cheery, 21:05 22-11-2006
batton

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

Цитата:
 
RewriteEngine  on
RewriteBase    /~quux/
RewriteRule    ^hotsheet/(.*)$  http://www.tstimpreso.com/hotsheet/$1  [P]
 

 
взято отсюда http://www.egoroff.spb.ru/portfolio/apache/rewriteguide.html

Всего записей: 83 | Зарегистр. 18-08-2004 | Отправлено: 21:14 22-11-2006
Cheery



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

Цитата:
а такой вариант?  

а может просто сам попробуешь??

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

Всего записей: 52737 | Зарегистр. 04-04-2002 | Отправлено: 21:16 22-11-2006
batton

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
p.s.: не увидел ваш совет
 
Добавлено:
Forbidden

Цитата:
 
Options FollowSymLinks or SymLinksIfOwnerMatch is off which implies that RewriteRule directive is forbidden
 

.htaccess лежит непосредственно в директории запрос из которой надо пернаправлять на другой сервер

Цитата:
 
RewriteRule    ^/(.*)$  http://domain2/lib/bookshelf/corolla/$1  [P]
 

Всего записей: 83 | Зарегистр. 18-08-2004 | Отправлено: 21:16 22-11-2006
Cheery



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

Цитата:
Options FollowSymLinks or SymLinksIfOwnerMatch is off which implies that RewriteRule directive is forbidden  

ответ..  дан.. расшифровать?

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

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

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
да, если Вас не затруднит. потому что :
Options +FollowSymLinks
прописано в .htaccess
 

Цитата:
 
Options +FollowSymLinks  -Indexes
 
RewriteEngine  on
RewriteRule    ^/(.*)$  http://mister-user.com/lib/bookshelf/corolla/$1  [P]
 

Всего записей: 83 | Зарегистр. 18-08-2004 | Отправлено: 23:12 22-11-2006
Cheery



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

Цитата:
прописано в .htaccess  

htaccess в какой папке лежит?
в корне сайта? если нет, то почему rewriterule написан от корня?

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

Всего записей: 52737 | Зарегистр. 04-04-2002 | Отправлено: 23:19 22-11-2006
batton

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
лежит не в корне
http://auto-dvor.ru/lib/bookshelf/corola/.htaccess
 
пробовал RewriteBase /www/полный_путь_до_папки/
та же реакция

Всего записей: 83 | Зарегистр. 18-08-2004 | Отправлено: 23:32 22-11-2006
Cheery



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

Цитата:
пробовал RewriteBase /www/полный_путь_до_папки/  

при чем тут www??? это пишется для пути от корня сайта..
 
так corola с двумя l или одной? плюс разрешено ли менять Options в AllowOverride?
 


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

Всего записей: 52737 | Зарегистр. 04-04-2002 | Отправлено: 23:36 22-11-2006
batton

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

Цитата:
плюс разрешено ли менять Options в AllowOverride?

а вот этого я не знаю и узнать в разумные сроки не получится  потому как тех. поддержка работает ОЧЧЕНЬ медленно. а через месяц - переезжаю на другой хостинг  

Цитата:
при чем тут www??? это пишется для пути от корня сайта

я считал что это полный путь в файловой структуре сервера.  
 

Всего записей: 83 | Зарегистр. 18-08-2004 | Отправлено: 23:41 22-11-2006
max960

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
написав в htaccess вот это :
 
RewriteEngine on
RewriteBase /
Options +FollowSymlinks
RewriteRule ^link/([a-zA-Z0-9]+)\.html$ /index.php?link=$1
 
я добился только того, что при вводе в адресную строку http://ххх.ru/link/123.html я попадаю на http://ххх.ru/index.php?link=123 но замены динамических ссылок на самой странице не произошло, там всё также при наведении курсора показывается что это ссылка ведёт на динамический адрес и при нажатии на неё в адресной строке показывается динамика.  
 В связи с этим возникает вопрос - возможно ли с помощью только mod_rewrite заменять ссылки внутри страниц и передавать браузеру страницы уже со статикой? Или для этого трубуются всякие php обработчики, как во всех CMS c ЧПУ?
 
Например CMS KOOBI - там есть htaccess c rewrite но и в файле index.php есть директивы по замене урл и одно без другого не работает!

Всего записей: 4 | Зарегистр. 24-05-2006 | Отправлено: 18:08 25-11-2006
edogs

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

Цитата:
я добился только того, что при вводе в адресную строку http://ххх.ru/link/123.html я попадаю на http://ххх.ru/index.php?link=123 но замены динамических ссылок на самой странице не произошло

И не должно было произойти.

Цитата:
В связи с этим возникает вопрос - возможно ли с помощью только mod_rewrite заменять ссылки внутри страниц и передавать браузеру страницы уже со статикой? И

Нет.

Цитата:
 для этого трубуются всякие php обработчики, как во всех CMS c ЧПУ?  

Да

Цитата:
Например CMS KOOBI - там есть htaccess c rewrite но и в файле index.php есть директивы по замене урл и одно без другого не работает!

ну естественно

Всего записей: 1777 | Зарегистр. 25-07-2004 | Отправлено: 18:39 25-11-2006
phpbbmods

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Привет ALL,
может, кто подскажет, как закрыть слеш на конце
условия в htaccess

Код:
 
RewriteEngine On
Options +FollowSymlinks
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)/$ /index.php?p=$1 [L]
 

 
вызываем ссылку /main/
все ок так /main - ошибка 404  
как бы автоматом закрыть?
Заранее благодарю,

Всего записей: 322 | Зарегистр. 09-02-2004 | Отправлено: 10:49 29-11-2006
vyvorot

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Уважаемые гуру!
Есть такая проблема - мне нужно дернуть новости с сайта в формате xml. Все несложно, но сайт запаролен с помощью mod_rewrite (т.е. .htpasswd). Пароль и логин знаю. Теоретически средствами PHP я могу авторизоваться на этой страничке и качнуть необходимый файлик?
 
 
UPD. Затупил =)
 
http://user:pass@www.domain.com достаточно

Всего записей: 2 | Зарегистр. 29-11-2006 | Отправлено: 11:37 29-11-2006 | Исправлено: vyvorot, 12:58 30-11-2006
edogs

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

Цитата:
может, кто подскажет, как закрыть слеш на конце  

добавьте /? в конце, сразу после {requies_filename}

Всего записей: 1777 | Зарегистр. 25-07-2004 | Отправлено: 04:12 01-12-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