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

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



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Возникла проблема, тип один каким то образом направил на мой сайт  кучу поисковых систем, вообще м сложил мне сайт, хостер закрыл на 2часика,  мне на хостере сказали что надо мутить в файле : . htaccess
Писать там : deny from all
Вот хочу спросить , как правильно составить форму, плохо или хорошо это будет ?
Там ведь можно запрещать индекс ботам а можно и разрешать.
 
Так вот  интересно какими ботами мой сайт сложили.
Вообще кто это сделал реально узнать ? а если написать заявления в милицию, будет  этому челу что ни будь ?

Всего записей: 2112 | Зарегистр. 23-06-2006 | Отправлено: 08:36 15-04-2009
PEDKA



Улыбающийся КС
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
newbies

Цитата:
Вот хочу спросить , как правильно составить форму, плохо или хорошо это будет ?

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

Цитата:
Там ведь можно запрещать индекс ботам а можно и разрешать.

Там можно запрещать доступ по IP. Индексацией управляет файл Robots.txt.
 

Цитата:
Вообще кто это сделал реально узнать ?

Нет. Можно узнать только их IP-адреса, записанные в логах доступа.
 

Цитата:
а если написать заявления в милицию, будет  этому челу что ни будь ?

Не смеши меня. У тебя заявление не примут.

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

Всего записей: 15958 | Зарегистр. 04-05-2003 | Отправлено: 08:53 15-04-2009
newbies



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
по поводу заявления, это я так узнал. ведь есть люди которые работают над всяким таким ! инетовским .
 
ип прокси спамеров, так он каждый раз другой !  хостер сказал что через программу делали это.
 
ну так есть боты которые мимо этого файла Robots.txt идут .
вот  чел  сказал что направил  ботов на меня кучу и сайт сложился.
 
Добавлено:
как правильно можно ип запретить ?
 
это мол разрешить.
 
order allow deny  
deny from all  
allow from 192.126.12.199
 
Запретить доступ с определенного ip:  
order allow deny  
deny from all  
deny from <ваш ip>
 
а как сделать что бы чел мог на главную зайти  но а по разделам не мог заходить.

Всего записей: 2112 | Зарегистр. 23-06-2006 | Отправлено: 09:13 15-04-2009
PEDKA



Улыбающийся КС
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
newbies

Цитата:
ну так есть боты которые мимо этого файла Robots.txt идут .

Этот файл читают только поисковые боты.
 

Цитата:
как правильно можно ип запретить ?

Ну ты же написал сам.
 

Цитата:
а как сделать что бы чел мог на главную зайти  но а по разделам не мог заходить.

Например, так:
 

Код:
RewriteEngine On
 
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php [L,QSA]
 


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

Всего записей: 15958 | Зарегистр. 04-05-2003 | Отправлено: 11:07 15-04-2009
newbies



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

Всего записей: 2112 | Зарегистр. 23-06-2006 | Отправлено: 11:40 15-04-2009
PEDKA



Улыбающийся КС
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
newbies

Цитата:
это что за команда ?

В мануале это есть.
 

Цитата:
я  имел ввиду что бы определился его ип и он смог на главную зайти но а когда пытался  зайти в какой либо раздел его перекидывало на главную.

Сейчас так и есть, только IP не определяется.
 
IP ты можешь в скриптах определить.

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

Всего записей: 15958 | Зарегистр. 04-05-2003 | Отправлено: 12:26 15-04-2009 | Исправлено: PEDKA, 13:58 15-04-2009
newbies



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
RewriteEngine On  
 
RewriteCond %{REQUEST_FILENAME} !-f  
RewriteCond %{REQUEST_FILENAME} !-d  
RewriteRule ^(.*)$ index.php [L,QSA]
 
а где тут ип писать ?

Всего записей: 2112 | Зарегистр. 23-06-2006 | Отправлено: 13:48 15-04-2009
PEDKA



Улыбающийся КС
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
newbies

Цитата:
а где тут ип писать ?

Чей IP?

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

Всего записей: 15958 | Зарегистр. 04-05-2003 | Отправлено: 14:02 15-04-2009
newbies



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
ну как чей , того чела который будет на сайт заходить, допустим он нафлудил, наспамил и т.д
я взял  его ип запихал , сделал что бы он  входил на главную, но когда пытался зайти на другие страницы, его перекидывало  назад на главную.

Всего записей: 2112 | Зарегистр. 23-06-2006 | Отправлено: 15:10 15-04-2009
PEDKA



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

Код:
 
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REMOTE_ADDR} ^127.0.0.1
RewriteRule ^(.*)$ index.php [L,QSA]
 

 
Красным написан IP-адрес, которому всё время будет показываться главная страница.

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

Всего записей: 15958 | Зарегистр. 04-05-2003 | Отправлено: 15:36 15-04-2009 | Исправлено: PEDKA, 15:37 15-04-2009
feodus



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Подскажите пожалуйста где я облажался ;-(
------------------------------------------------
<IfModule mod_rewrite.c>
RewriteEngine On
Options +FollowSymlinks
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php[L]
 
RewriteCond %{HTTP_REFERER} ^http://(www.)?bad\.site\.net/.*$ [NC]
RewriteRule ^/$ http://www.tosite.com[L]
</IfModule>
------------------------------------------------
 
Мне нужно чтоб посетитель пришедший по ссылке с сайта www.bad.site.net сразу переходил на tosite.com.
 
А система вылетает в 500 ошибку когда я сам проверяю и кликаю на ссылку ( на мой сайт) на сайте www.bad.site.net

Всего записей: 39 | Зарегистр. 16-09-2003 | Отправлено: 14:55 16-04-2009
Cheery



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

Цитата:
А система вылетает в 500 ошибку когда я сам проверяю и кликаю на ссылку  

ну так читайте error.log - там 500 ошибки описаны

Цитата:
/index.php[L]  

пробел между URL и [L]
 

Цитата:
http://www.tosite.com[L]

аналогично

Цитата:
RewriteRule ^/$

какие запросы вы собираетесь "отлавливать" этим правилом?


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

Всего записей: 52737 | Зарегистр. 04-04-2002 | Отправлено: 19:57 16-04-2009
newbies



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
а  все эти настройки для всяких там логов, отлова, сайт грузить не будут ?

Всего записей: 2112 | Зарегистр. 23-06-2006 | Отправлено: 12:09 17-04-2009
booro

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Как преобразовать ссылки вида /catalog.html?page=shop.browse&category_id=43 в /catalog/category=43
 
RewriteRule ^catalog.html?page=shop.browse&category_id=([0-9]+)$ /catalog/category=$1 [L] ничего не дает.

Всего записей: 17 | Зарегистр. 22-05-2008 | Отправлено: 13:26 17-04-2009
Cheery



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

Цитата:
а  все эти настройки для всяких там логов, отлова, сайт грузить не будут ?

смотря сколько и смотря где. в целом - нет
 
booro

Цитата:
Как преобразовать ссылки вида  

обычно стараются преобразовать обратно. в любом случае такого
Цитата:
/catalog/category=43  

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

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

Всего записей: 52737 | Зарегистр. 04-04-2002 | Отправлено: 20:01 17-04-2009
Expert LTD



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Подскажите.
Что есть: Есть сайт http://mysite.com/, когда пользователь вводит данную ему ссылку (например: http://mysite.com/reff/ или http://mysite.com/reff   со и без слеша на конце), его перекидавает на /link/index.php?i=$1 и оттуда идет редирект на другой сайт. Скрипт редиректа находиться в папке link.  
 
В корне сайта лежит .htaccess, вот его содержимое:
 
Options +FollowSymLinks  
RewriteEngine on
RewriteCond %{REQUEST_URI} (.*)$
RewriteRule (.*)$ /link/index.php?i=$1
RewriteCond %{REQUEST_URI} (.*)/$
RewriteRule (.*)/$ /link/index.php?i=$1
 
Что надо:Сделать так чтобы index.php(html) находящийся в корне сайта отображался, а не редиректил сразу же.
http://mysite.com/index.php
 
ЗЫ В настоящее время при заходе на http://mysite.com/ редиректит сразу на http://mysite.com/link/

Всего записей: 46 | Зарегистр. 20-05-2008 | Отправлено: 14:40 28-04-2009
Cheery



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

Цитата:
RewriteCond %{REQUEST_URI} (.*)$
RewriteRule (.*)$ /link/index.php?i=$1
RewriteCond %{REQUEST_URI} (.*)/$
RewriteRule (.*)/$ /link/index.php?i=$1  

Вы понимаете, что тут два раза написано одно и то же?
должно быть
RewriteCond %{REQUEST_URI} !^/index\.php$
RewriteRule (.*)$ /link/index.php?i=$1

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

Всего записей: 52737 | Зарегистр. 04-04-2002 | Отправлено: 19:27 28-04-2009
Expert LTD



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

Цитата:
Вы понимаете, что тут два раза написано одно и то же?
должно быть

 
Написано, как мне кажется все правильно. Двумя способами, потому что так требует скрипт. Вашим же методом, если ввести ссылку с / на конце, то редиректа нет, а если без / , то редирект идет.
 

Цитата:
RewriteCond %{REQUEST_URI} !^/index\.php$
RewriteRule (.*)$ /link/index.php?i=$1  

 
Прошу прошения, не так пояснил в предыдушем своем посте. При заходе на http://mysite.com/ должно срабатывать http://mysite.com/index.php, f не http://mysite.com/link/index.php.  
Как вы показали пример: При заходе на http://mysite.com/ вылетает ошибка  Internal Server Error, а если ввести http://mysite.com/index.php - то все нормально.

Всего записей: 46 | Зарегистр. 20-05-2008 | Отправлено: 04:02 29-04-2009
Cheery



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

Цитата:
Написано, как мне кажется все правильно. Двумя способами, потому что так требует скрипт. Вашим же методом, если ввести ссылку с / на конце, то редиректа нет, а если без / , то редирект идет.  

ой, ну елки..
тогда так
RewriteCond %{REQUEST_URI} (.*)/?$
RewriteRule (.*)/?$ /link/index.php?i=$1  
одна запись, заменяющая те две.
 
итого..
 
RewriteCond %{REQUEST_URI} !^/index\.php$
RewriteCond %{REQUEST_URI} !^/$
RewriteRule (.*)/?$ /link/index.php?i=$1 [L]


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

Всего записей: 52737 | Зарегистр. 04-04-2002 | Отправлено: 04:06 29-04-2009
Expert LTD



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

Всего записей: 46 | Зарегистр. 20-05-2008 | Отправлено: 15:42 29-04-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