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

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



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


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

Всего записей: 52737 | Зарегистр. 04-04-2002 | Отправлено: 19:01 02-11-2009
Only4You



Junior Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Приветствую. Подскажите вот у меня сайт . при нажатие на ссылки вид получаеться
http://mysite.ru/?act=contacts
http://mysite.ru/?act=doc
 
Как можно убрать ?act=contacts, что бы было только http://mysite.ru
или какие варианты есть.
Спасибо.

Всего записей: 34 | Зарегистр. 02-08-2009 | Отправлено: 00:39 04-11-2009
Cheery



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

Цитата:
Как можно убрать ?act=contacts, что бы было только

никак. к mod_rewrite это не относится
либо делаете все во фрейме, либо извращаетесь с выставлением адресов в куках.. либо делаете все обновления через ajax.. ничто из этого не приводит к хорошему SEO

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

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

Junior Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Доброго времени суток. У меня следующая проблема. Перенёс, например, сайт http://mysite.ru на домен mysite.com. Сейчас одновременно существуют оба сайта и нужно, что зашедшие к примеру на страницу http://mysite.ru/content/view/28/33/ попадали такую же страницу другого домена, то есть на http://mysite.com/content/view/28/33/
Какое правило здесь нужно использовать?
 
Правило

Код:
 
RewriteCond %{HTTP_HOST} ^www.mysite.ru$ [R=301,1]
RewriteRule ^(.*)$ http://mysite.com/$1
 

выдаёт почему-то ошибку 500

Всего записей: 118 | Зарегистр. 21-07-2007 | Отправлено: 21:40 11-11-2009
Cheery



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

Цитата:
выдаёт почему-то ошибку 500  

потому что
Цитата:
[R=301,1]  

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

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

Всего записей: 52737 | Зарегистр. 04-04-2002 | Отправлено: 21:41 11-11-2009
dsfkjzhnxcxz

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

Цитата:
относится к правилами, а не условиям
перенесите строкой ниже

Спасибо, всё заработало

Всего записей: 118 | Зарегистр. 21-07-2007 | Отправлено: 22:05 11-11-2009
ASE_DAG



Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Добрых суток. Я в вашем деле даже близко не специалист, но сейчас пришлось заняться небольшим сайтом, столкнулся вот с чем.
Есть файлы, заливающиеся по FTP, в именах кириллица KOI8-R. Обращение к файлу обрабатывается RewriteEngine:

Цитата:
RewriteCond %{REQUEST_FILENAME}.htm -f
RewriteRule ^(.+)$ index.php?page=$1.htm [L,QSA]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^(.+)$ index.php?dir=$1 [L,QSA]

После обработки имя файла на выходе оказывается в UTF-8, следствие — файл не найден.
Можно, конечно, в скрипте сконвертировать обратно в KOI-8, но хочется узнать причину и обойтись без этого финта. Подскажите, где искать.

----------
Dmitry Alexandrov <321942@gmail.com> [PGP] [BTC]

Всего записей: 9272 | Зарегистр. 12-05-2005 | Отправлено: 20:51 22-11-2009
za12

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Все привет. Народ подскажите, как сделать так, чтобы правила реврайта работали без .htaccess, т.е можно их задать как общие для все виртуальных хостов?

Всего записей: 1 | Зарегистр. 30-07-2006 | Отправлено: 21:33 23-11-2009
andead



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
za12
поместить их в httpd.conf

Всего записей: 1821 | Зарегистр. 22-09-2005 | Отправлено: 01:11 24-11-2009
LuXiMaL



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Приветствую всех.
Перехожу на другую cms, а посему для меня возникла такая проблема:
Имеются ссылки вида http://www.***.ru/news.php?readmore=ЦИФРЫ  
Хотел редиректить на ссылки вида http://www.***.ru/bla-bla-bla.html
Исходных ссылок около 40.
Подскажите пожалуйста как это организовать в .htaccess.

Всего записей: 45 | Зарегистр. 27-01-2008 | Отправлено: 01:49 29-11-2009
LuXiMaL



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

Код:
RewriteCond %{QUERY_STRING} readmore=ЦИФРЫ
RewriteRule news.php http://www.***.ru/bla-bla-bla.html? [R=301,L]  

Всего записей: 45 | Зарегистр. 27-01-2008 | Отправлено: 00:11 30-11-2009
The_S

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Привет.
 
Подскажите как можно реализовать такую задачу:
Есть всякие разные файлы (картинки, css, js) в нескольких директориях в корне.
/img
/codebase
и т.д.
Допустим, я их физически переношу в одну директорию, например, в /oldsite/
Как сделать чтобы при запросе /img/* выдавал /oldsite/img/* ну и соответвенно все остальнон перенесенное тоже /codebase/* => /oldsite/codebase/* и т.д.

Всего записей: 188 | Зарегистр. 13-09-2006 | Отправлено: 16:28 04-12-2009 | Исправлено: The_S, 16:28 04-12-2009
Le Droy

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Доброго времени суток!
 
35 страниц осилить, к сожалению, не могу. Подскажите, пожалуйста: как для .js/.css/.gif/.jpg etc. файлов не применять rewrite правила? Я знаю, где-то это уже обсуждалось, но не могу найти где.
 
Т.е. у нас есть сайт: localhost/index.php?page=welcome
есть rewrite правило: ^welcome/ index.php?page=welcome
 
Все картинки, скрипты, стили находятся в корне. Когда мы заходим на: localhost/welcome/ он уже не загружает ни скрипты, ни картинки, ни стили, т.к. относительный адрес становится уже: localhost/welcome/style.css, а не как должно быть: localhost/style.css
 
Как от такого избавиться? Заранее блгодарен за помощь!

Всего записей: 23 | Зарегистр. 24-02-2009 | Отправлено: 18:46 08-12-2009
koc



Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Может ли mod_rewrite как-то влиять на mod_headers? Нужно предложить сохранить файл, а не показывать его.

Код:
RewriteRule (.+?)/(.+?)/(.+) /path/to/dir/$1 [L,T="application/octet-stream"]
Header set Content-Type "application/octet-stream"
Header set Content-Disposition "attachment; filename='aa.pdf'"
 

 
mod_headers есть. Никаких ошибок в error.log апача нет. Файл открывается так, как будто он text/html, хедеры соответствующие(то есть мои не устанавливаются). Пробовал менять порядок: сначала хедеры ставлю, потом rewriteRule - не помогло.
 
пробовал делать даже так:

Код:
Header unset Content-Type
Header unset Content-Disposition
Header set Content-Disposition attachment
Header set Content-Type application/octet-stream
Header add Content-Type application/force-download
Header add Content-Type application/download
Header unset Content-Transfer-Encoding
Header set Content-Transfer-Encoding binary
 

 
Что я делаю не так?

Всего записей: 270 | Зарегистр. 04-03-2005 | Отправлено: 20:15 13-12-2009
substrackto

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

Цитата:
Доброго времени суток!
 
35 страниц осилить, к сожалению, не могу. Подскажите, пожалуйста: как для .js/.css/.gif/.jpg etc. файлов не применять rewrite правила? Я знаю, где-то это уже обсуждалось, но не могу найти где.
 
Т.е. у нас есть сайт: localhost/index.php?page=welcome
есть rewrite правило: ^welcome/ index.php?page=welcome
 
Все картинки, скрипты, стили находятся в корне. Когда мы заходим на: localhost/welcome/ он уже не загружает ни скрипты, ни картинки, ни стили, т.к. относительный адрес становится уже: localhost/welcome/style.css, а не как должно быть: localhost/style.css
 
Как от такого избавиться? Заранее блгодарен за помощь!

Попробуй добавить:
RewriteCond $1 !^.+\.(js|css|gif|jpg|png)$

Всего записей: 93 | Зарегистр. 25-10-2007 | Отправлено: 16:56 15-12-2009
bankir19821982

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Товарищи, выручайте.
есть урл вида item.php?id=*0025478
некоторые люди заходят по ссылке item.php?id=%2A0025478 (* меняет на %2A)
хотелось бы перенаправлять их на item.php?id=*0025478 (тоесть со звездочкой)
что-то думал-думал, пробовал разные варианты, но к концу недели ничего в голову уже не приходит. Может Вы чего подскажете - буду очень признателен.

Всего записей: 105 | Зарегистр. 20-03-2008 | Отправлено: 00:24 18-12-2009
saharito

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Подскажите в чем трабл .. урезал URL и получился  
site.ru/for
Но если прописать  
site.ru/for/
Картинки и все что можно не подгружаеться .  
RewriteEngine on
RewriteRule ^([a-zA-Z0-9_-]+)/?$ mys.php?name_url=$1 [L]
Уже запарился ковырять просто все напрасну и все .

Всего записей: 11 | Зарегистр. 21-09-2008 | Отправлено: 12:46 28-12-2009
dacuan

Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
saharito
Как URL-ы картинок прописаны на странице?

Всего записей: 545 | Зарегистр. 23-10-2003 | Отправлено: 15:56 28-12-2009
saharito

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
они все лежат в папке images
получаеться site.ru/images/foto.jpg

Всего записей: 11 | Зарегистр. 21-09-2008 | Отправлено: 02:19 29-12-2009
PEDKA



Улыбающийся КС
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
saharito
mod_rewrite: документация, готовые решения, вопросы

----------
вот такая вот батва ©...
"Тестирование" это давно уже не помойка.
"Тестирование" это филиал "Помощи" ©

Всего записей: 15958 | Зарегистр. 04-05-2003 | Отправлено: 08:25 29-12-2009
Открыть новую тему     Написать ответ в эту тему

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