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

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



BANNED
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Weinaum Только на будущее, давайте правильно Т/З. Про джумбалу то никто как-то не подумал, из-за этого и были даны неправильные советы, и вон сколько постов нагородили, на примитивной задаче.
И чиста для прикола, попробуйте затычку на php, с первоначальным НтАцесс. Просто уж спортивный интерес.
 
Добавлено:

Цитата:
должны. 
Неа

Всего записей: 2307 | Зарегистр. 21-09-2006 | Отправлено: 23:40 13-02-2014
Weinaum



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
MisHel64
Была тоже такая мысль, создать в корне main.php и там переадресовать - щас попробовал, да, тоже работает
 
И про joomla я в первом посту указал, на всякий случай.
Главное, работает, чтобы греки счастливы были )))

Всего записей: 2152 | Зарегистр. 18-06-2006 | Отправлено: 02:30 14-02-2014
MyGoogle

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Всем привет.
 
Вот так работает (т.е что идет после /cat/cats/переменная)  
 
 
RewriteRule ^cat/cats/([^/]+)/$ /?q=test&cat=0&type=ad&cityname=$1 [L]
 
 
 
А вот так не работает
 
 
 
RewriteRule ^cat-cats/([^/]+)/$ /?q=test&cat=0&type=ad&cityname=$1 [L]
 
 
 
 
т.е если есть ТИРЕ вместо / то не передает парамент почему то, мне нужно получить то что идет после cat/cats/ и передать этот параметр в $_GET но с тире не хочет, как это возможно сделать ?

Всего записей: 219 | Зарегистр. 06-12-2008 | Отправлено: 16:35 22-03-2014
Cheery



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

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

Всего записей: 52737 | Зарегистр. 04-04-2002 | Отправлено: 20:49 22-03-2014
MyGoogle

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Какую еще структуру ?
 
RewriteRule ^cat/cats/([^/]+)/$ /?q=test&cat=0&type=ad&cityname=$1 [L]  
 
сдесь мы обращаемся к странице index.php??q=test&cat=0&type=ad&cityname=amsterdam
 
на странице я получаю данные так $_GET["cityname"];
 
в этом случае все работает, но в этом
 
^cat-cats/([^/]+)/$ /?q=test&cat=0&type=ad&cityname=$1 [L]  
 
Не работает т.е если стоит тире параметр не передаються почему то..
 
А мне нужно получать то что идет после cat-cats/сдесь то что мне нужно получить в $_GET
 
Вот сижу не пойму почему не работает.. т.е если слеш стоит то передаеться если слеша нет то нет..

Всего записей: 219 | Зарегистр. 06-12-2008 | Отправлено: 21:29 22-03-2014
Cheery



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

Цитата:
Какую еще структуру

где вы слово "структура" увидели?
 

Цитата:
А мне нужно получать то что идет после cat-cats/сдесь то что мне нужно получить в $_GET  

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

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

Всего записей: 52737 | Зарегистр. 04-04-2002 | Отправлено: 21:43 22-03-2014
MyGoogle

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Ну строка запросы это я думаю вы об этом ?
 
http://www.site.com/index.php?q=test&cat=0&type=ad&cityname=amsterdam
 
ну можно без Index.php он сам по дефауту идет.
 

Всего записей: 219 | Зарегистр. 06-12-2008 | Отправлено: 22:10 22-03-2014
Cheery



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

Цитата:
Ну строка запросы это я думаю вы об этом ?  

да елки-палки..  
вы для чего правило написать пытаетесь?
для какого преобразования, пример начальной строки покажите.
 
под что это пытаетесь применить?

Цитата:
^cat-cats/([^/]+)/$



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

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

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Как под что ?
 
под это
 
http://www.site.com/?q=test&cat=0&type=ad&cityname=amsterdam
 
 
Это поиск как бы идет, т.е если я ввожу
 
http://www.site.com/cat-cats/amsterdam/
 
то должно передавать значение amsterdam
 
но оно передаеться только если не ТИРЕ а СЛЕШ стоит т.е
 
http://www.site.com/cat/cats/amsterdam/
 
 

Всего записей: 219 | Зарегистр. 06-12-2008 | Отправлено: 11:04 23-03-2014
Cheery



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

Цитата:
Как под что ?

вы задаете ненужные вопросы. делайте так, как вас просят, чтобы не повторять одно и то же 3 раза.
 

Цитата:
оно передаеться


Цитата:
то передаеться  

что делает - на конце мягкого знака нет, значит и в глаголе не должно быть
 
 

Цитата:
но оно передаеться только если не ТИРЕ а СЛЕШ стоит т.е  

значит показывайте все правила - у вас где то возникает конфликт.
тире или нет - разницы быть не должно, причина в чем то еще.
можете включить логгирование работы mod_rewrite и посмотреть обработку запроса

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

Всего записей: 52737 | Зарегистр. 04-04-2002 | Отправлено: 11:40 23-03-2014
MyGoogle

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
тире или нет - разницы быть не должно - быть не должно (как раз должно) тире может служить разделителем между префиксом и переменной !
 
Видать вы тут на форуме за всех оттдуваетесь так как везде только вы отвечаете..
 
Добавлено:
Вообщем я понял в чем дело дело дело в том что что повторяеться там некоторые строки в htaccess оказуеться шери ты был прав я просто удалил все правила и оставил одно - вроде работает.
Надеюсь дальше разберусь спасибо большое

Всего записей: 219 | Зарегистр. 06-12-2008 | Отправлено: 13:54 23-03-2014
MyGoogle

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Вообщем у меня есть правило в .htaccess
 
RewriteRule ^[^_]+_(\d+)/[^_]+_(\d+)/$ index.php?show=post&cat=$1&subcat=$2 [QSA]
 
Сам урл выглядит так
 
http://site.com/testprefix/region/cat_4/subcat_11/
 
т.е testprefix/region/ идут как дополнение а передача идет только из cat_4 и subcat_11
 
Почему когда я проверяю программой (тест урл) то мне выдает надпись object moved tempo...
 
Как мне сделать так что бы был нормальный статус 200 ?  
 
 
Писал так же [QSA,L]
 
Но при проверки пишет всегда 302 ошибка - хотя страница отображается нормально если зайти с браузера.

Всего записей: 219 | Зарегистр. 06-12-2008 | Отправлено: 22:35 10-04-2014
Cheery



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

Цитата:
о при проверки пишет всегда 302 ошибка  

значит срабатывает где то еще или сервис проверки глючит.
 
посмотрите сами заголовки ответа сервера

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

Всего записей: 52737 | Зарегистр. 04-04-2002 | Отправлено: 22:37 10-04-2014
MyGoogle

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Как это где то еще ?
Вообщем оставил в штаччес только этот мод реврайт - все равно пишет "временно перемещен"
Странно щас включил анализ http заголовков, пишет 200 ОК.. хм
Что то тут не так надо как то достоверно проверить

Всего записей: 219 | Зарегистр. 06-12-2008 | Отправлено: 23:08 10-04-2014
Cheery



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

Цитата:
Как это где то еще ?  

срабатывает другое правило, к примеру.
 

Цитата:
штаччес только этот мод реврайт - все равно пишет "временно перемещен"  

значит врет сервис.

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

Всего записей: 52737 | Зарегистр. 04-04-2002 | Отправлено: 23:09 10-04-2014
MyGoogle

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

Всего записей: 219 | Зарегистр. 06-12-2008 | Отправлено: 23:40 10-04-2014
PavelSES



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

Цитата:
Может посоветуете какую нибудь программу для локального анализа ссылок ?

Xenu's Link Sleuth не подойдёт?

Всего записей: 223 | Зарегистр. 18-07-2006 | Отправлено: 00:13 11-04-2014
Cheery



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

Цитата:
Может посоветуете какую нибудь программу для локального анализа ссылок ?

не пользуюсь.
 
часть ссылок, к примеру, может быть вообще создаваться с помощью javascript.
 
я проверяю уже потом, по логам ошибок сервера или же через утилиты вебмастера в гугле.

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

Всего записей: 52737 | Зарегистр. 04-04-2002 | Отправлено: 00:14 11-04-2014
MyGoogle

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

Цитата:
Xenu's Link Sleuth не подойдёт?

 
Так я ей и проверяю ! а она мне выдает moved temp..
 
Потом делаю так, включаю анализ заголовков, ввожу урл, и все, в заголовках пишет 200 OK.
 
Вот и думаю что то не так..
 
 

Цитата:
я проверяю уже потом, по логам ошибок сервера или же через утилиты вебмастера в гугле.

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

Всего записей: 219 | Зарегистр. 06-12-2008 | Отправлено: 00:27 11-04-2014 | Исправлено: MyGoogle, 00:29 11-04-2014
Cheery



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

Цитата:
Вот и думаю что то не так..  

смотрите на какой URL она ругается и делайте как она.
посмотрите логи сервера, как конкретно она делает запрос - может там что то отличается

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

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

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