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

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



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Приветствую! Подскажите плз - есть код:

Код:
 
DirectoryIndex index.php index.html
Options -Indexes
 
RewriteEngine on
Options +FollowSymlinks
RewriteBase /
 
RewriteCond %{HTTP_HOST} ^domain.com.ua
RewriteRule (.*) http://www.domain.com.ua/$1 [R=301,L]
 
RewriteRule ^about\/(?:.*)$ index.php?menu=2
RewriteRule ^contacts\/(?:.*)$ index.php?menu=5
 
RewriteRule \.php - [F]
 

Всё работало, пока мне не пришла в голову гениальная идея запретить прямой доступ к скрипту index.php последней строчкой. После этого я получаю 403 Forbidden при попытках зайти на about/ или contacts/ . Подскажите, как правильно запретить прямой доступ к скриптам?

Всего записей: 270 | Зарегистр. 22-04-2005 | Отправлено: 17:28 07-04-2008
andead



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

Код:
RewriteRule ^about\/(?:.*)$ index.php?menu=2 [L]
RewriteRule ^contacts\/(?:.*)$ index.php?menu=5 [L]

Всего записей: 1821 | Зарегистр. 22-09-2005 | Отправлено: 18:44 07-04-2008 | Исправлено: andead, 18:45 07-04-2008
unique1988

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Здраствуйте,у меня тут вопрос.
У меня имеется тест по определенной дисцип. ,когда тот кто отвечает на этот тест он записываеться в базу где пишеться его имя которое он ввел и пишется процентный коэффицент правильных вопросов. Я сделал страницу которая выводит из базы test с таблицы ye1 (сюда записываются данные о результате теста) Имя пользователя и его процент правильных ответов. Вот сам вопрос .. Можно ли сделать как нибудь,чтобы не проценты выводились ,а оценка.
Например от  1% до 30%  -  оценка 2, 31%-60% - 3, 61%-80% -4 и 81%-100% -5.
Не обязательно в этих пределах,но что то в этом роде ...

Всего записей: 3 | Зарегистр. 10-04-2008 | Отправлено: 00:27 10-04-2008
Cheery



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

Цитата:
Здраствуйте,у меня тут вопрос.  

У вас не тут вопрос, так как ваш вопрос не имеет никакого отношения к этой теме!

Цитата:
Можно ли сделать как нибудь,чтобы не проценты выводились ,а оценка.

можно.. простейшая математика.
на вашем уровне можно даже просто через if ы сделать

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

Всего записей: 52737 | Зарегистр. 04-04-2002 | Отправлено: 00:30 10-04-2008
unique1988

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

Цитата:
У вас не тут вопрос, так как ваш вопрос не имеет никакого отношения к этой теме!
 
Сори не углядел.

Цитата:
 
можно.. простейшая математика.  
на вашем уровне можно даже просто через if ы сделать
 

Да я пробывал уже, но не получилось

Всего записей: 3 | Зарегистр. 10-04-2008 | Отправлено: 00:44 10-04-2008
Cheery



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

Цитата:
Да я пробывал уже, но не получилось

и что же не получилось?  
предположим, что в $p - процентное выражение для данного ответившего
if($p>=1&&$p<=30)
 $grade=2;
else if ($p>=31&&$p<=60)
 $grade=3;
else if ($p>=61&&$p<=80)
 $grade=4;
else if ($p>=81&&$p<=100)
 $grade=5;
 
что в этом сложного?  


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

Всего записей: 52737 | Зарегистр. 04-04-2002 | Отправлено: 03:54 10-04-2008 | Исправлено: Cheery, 03:54 10-04-2008
unique1988

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

Всего записей: 3 | Зарегистр. 10-04-2008 | Отправлено: 10:07 10-04-2008
stalker_2000



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

Цитата:
RewriteRule ^about\/(?:.*)$ index.php?menu=2 [L]
RewriteRule ^contacts\/(?:.*)$ index.php?menu=5 [L]

Не работает, всё равно доступ запрещён
 

Код:
DirectoryIndex index.php index.html
Options -Indexes
 
RewriteEngine on
Options +FollowSymlinks
RewriteBase /
 
RewriteCond %{HTTP_HOST} ^domain.com.ua
RewriteRule (.*) http://www.domain.com.ua/$1 [R=301,L]
 
RewriteRule ^about\/(?:.*)$ index.php?menu=2 [L]
RewriteRule ^contacts\/(?:.*)$ index.php?menu=5 [L]
 
RewriteRule \.php - [F]

 
PS. И ещё такая проблемка - собственно при такой логике будет запрещаться доступ к корню: http://domain.ru/ --> 403, т.к. срабатывает последнее правило для index.php. Возможно ли вообще как-то запретить прямой доступ к скриптам или нет?

Всего записей: 270 | Зарегистр. 22-04-2005 | Отправлено: 11:09 10-04-2008 | Исправлено: stalker_2000, 12:35 10-04-2008
schalke



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Такая задача:
есть сайт domen.ru
все страницы имеют вид domen.ru/index.php?id=номер_какой-то
требуется сделать чтобы они имели читаемый формат то есть
domain.ru/privet_vsem.html
Для этого как я понял нужно завести базу соответствия id и названия страницы(чтол то типа 1-privet_vsem.html 2-pro_pogodu.html и т.д.)
Непонятно какое правило сделать для mod_rewrite и структура скрипта обработчика

Всего записей: 87 | Зарегистр. 08-11-2007 | Отправлено: 09:37 12-04-2008
6epcepk



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

----------
comming soon..

Всего записей: 2603 | Зарегистр. 02-05-2003 | Отправлено: 09:42 12-04-2008
schalke



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
То есть:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule (.*) http://www.domain.ru/$1 [L]
</IfModule>
а в базе храним что то типа этого
www.domain.ru/indexd.php?id=1  >=<  www.domain.ru/vsem_privet.html
 
скрипт обработчик тогда тоже index.php?
тогда так
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php [L,QSA]
?
в нем перехватываем REQUEST_URI и делаем выборку по базе,затем с помощью include
подключаем нужное?
 
Не проще ли тогда хранить в базе так:
1 >=< vsem_privet.html
 
просто с такой задачей сталкиваюсь впервые,а в интернете информации такои мало

Всего записей: 87 | Зарегистр. 08-11-2007 | Отправлено: 10:02 12-04-2008 | Исправлено: schalke, 10:30 12-04-2008
Tstf



Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Почему по ссылке  
 
_http://www.fmnokia.net/files/alpha/О я как бы ищу не по русской букве ? Как заставить чтобы искало по русской? Т.е.
 
Код примерно такой
 

Код:
 
// Алфавит
$acess_alpha = $filesConfig['alpha'];  
if($acess_alpha == 1)
{
    $tpl->load_template($custom_template.''.$modulname.'/alfavit.tpl');
 
    $words = $filesConfig['alpha_word'];  // подгуржаем строку с буквами (a,b,c,.... а,б,в,...)
    $alpha_stroks = explode(',',$filesConfig['alpha_stroks']);
    $alpha_array = explode(',',$words);
    $alpha_stroks_count = count($alpha_stroks)-1;
    $alpha_count = count($alpha_array)-1;
    for($j = 0; $j <= $alpha_count; $j++)
    {
        for($k = 0; $k <= $alpha_stroks_count; $k++)
        {
        if($j == $alpha_stroks[$k])
        $alpha .= "<br /><br />";
        }
        if($alpha_array[$j] != $_REQUEST['word'])
        {
        if ($config['allow_alt_url'] == "yes")
            $alpha .= "<a href=\"".$config['http_home_url']."".$modulname."/alpha/".$alpha_array[$j]."\">".$alpha_array[$j]."</a> ";
        else
            $alpha .= "<a href=\"".$config['http_home_url']."index.php?do=".$modulname."&amp;op=alpha&amp;word=".$alpha_array[$j]."\">".$alpha_array[$j]."</a> ";
        }
        else
        $alpha .= "<span>".$alpha_array[$j]."</span> ";
    }
    $tpl->set('{alpha}', $alpha);
    $tpl->compile('content');
}
// END Алфавит
 

 
При отключенном mod_rewrite получают ссылку
 
_http://www.fmnokia.net/index.php?do=files&op=alpha&word=%CE а не
_http://www.fmnokia.net/index.php?do=files&op=alpha&word=О
 
и наоборот.

----------
Заработок 2.0

Всего записей: 788 | Зарегистр. 22-04-2003 | Отправлено: 19:06 12-04-2008 | Исправлено: Tstf, 19:10 12-04-2008
Sebismil

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Подскажите пжлст, как переписать URL с www.sitename.ru/forum/index.php на www.sitename.ru/smfforum/index.php. Форум крутится внутри ЦМС Друпал. Если ссылку из форума по правой кнопке открыть в новом окне, то ссылка преобразовывается в www.sitename.ru/forum/index.php и открывается просто форум, без оболочки сайта на друпале (если в url заменить forum на smfforum, то открывается эта же страница форума, но внутри друпала). Спасибо всем ответившим!

Всего записей: 2 | Зарегистр. 09-05-2008 | Отправлено: 20:15 09-05-2008
Cheery



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

Цитата:
Как заставить чтобы искало по русской?  

www.php.net/urldecode


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

Всего записей: 52737 | Зарегистр. 04-04-2002 | Отправлено: 20:19 09-05-2008
Kobaltr

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
день добрый
помогите плиз в решении задачи
есть партнерская программа с линками для афилейтов вида
http://domain.com/?id=xxx
В существующем виде распыляется SEO  рейтинг по многочисленным партнерским ссылкам
Задача склеить для поисковиков все входящие линки
Необходимо посредством htaccess реализовать 301 редирект на http://domain.com/
при этом не потеряв код афилейта id=xxx
Возможно ли это?

Всего записей: 4 | Зарегистр. 13-05-2008 | Отправлено: 12:26 13-05-2008
PEDKA



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

Цитата:
Необходимо посредством htaccess реализовать 301 редирект на http://domain.com/

301 редирект со ссылок?
 
Самый простой способ следующий: генерировать ссылки вида ваш_сайт.ру/?exit=base64_encode(http://domain.com/?id=xxx). А в index.php прописать, что если существует переменная exit, передаваемая методом GET, то редиректить браузер на страницу base64_decode($_GET['exit']).

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

Всего записей: 15958 | Зарегистр. 04-05-2003 | Отправлено: 00:08 14-05-2008 | Исправлено: PEDKA, 00:09 14-05-2008
Kobaltr

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
вы не совсем поняли
я делаю редирект ссылок вида
 
http://domain.com?id=777
следующим  htaccess  
 

Код:
RewriteEngine On
 
RewriteBase /
 
RewriteCond %{QUERY_STRING} ^id=([0-9]+)(.*)$
 
RewriteRule ^index.php /? [R=301,L]
 

 
в итоге заголовок такой
 

Код:
 
 
http://domain.com/?id=777
 
 
GET /?id=777 HTTP/1.1
Host: domain.com
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.8.1.11) Gecko/20071127 Firefox/2.0.0.11 WebMoney Advisor
Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5
Accept-Language: ru-ru,ru;q=0.8,en-us;q=0.5,en;q=0.3
Accept-Encoding: gzip,deflate
Accept-Charset: windows-1251,utf-8;q=0.7,*;q=0.7
Keep-Alive: 300
Connection: keep-alive
Cookie: __utmz=108405131.1210689752.36.7.utmcsr=google|utmccn=(organic)|utmcmd=organic|utmctr=nudist%20movie; AFFILIATEUID=unknown_reseller; __utma=108405131.1434240671.1209725010.1210736718.1210833515.39; __utmc=108405131; PHPSESSID=ca50c393fd4c59b529fdcfabf841d94c
 
HTTP/1.x 301 Moved Permanently
Date: Thu, 15 May 2008 09:54:10 GMT
Server: Apache/1.3.34 (Unix) PHP/4.4.4
Location: http://domain.com/
Connection: close
Transfer-Encoding: chunked
Content-Type: text/html; charset=iso-8859-1
 
 
GET / HTTP/1.1
Host: domain.com
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.8.1.11) Gecko/20071127 Firefox/2.0.0.11 WebMoney Advisor
Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5
 

это позволяет мне склеить все внешние ссылки
 
Теперь задача  вытащить из хедера id с которым пришел посетитель и учесть его в скрипте партнерской програмы.
 
 

Всего записей: 4 | Зарегистр. 13-05-2008 | Отправлено: 13:59 15-05-2008
Cheery



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

Цитата:
вы не совсем поняли
я делаю редирект ссылок вида  

зачем?? если у вас есть index.php и указано, что это индексный файл, то даже htaccess не нужен
 
вообще не понимаю смысла преобразований выше.. если уж делать, то и передавать и id

Цитата:
RewriteRule ^index.php /? [R=301,L]  

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

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

Всего записей: 52737 | Зарегистр. 04-04-2002 | Отправлено: 20:27 15-05-2008
Kobaltr

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
цель- оптимизация для SEO  
динамические ссылки  
index.php?id=775
index.php?id=776
index.php?id=777
index.php?id=778
разумеется все ведут на index.php
но каждая из них воспринимается поисковиком как линк ведущий на отдельную страницу, что   распыляет суммарный вес  index.php для поисковиков
 

Всего записей: 4 | Зарегистр. 13-05-2008 | Отправлено: 20:58 15-05-2008
Cheery



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

Цитата:
но каждая из них воспринимается поисковиком как линк ведущий на отдельную страницу, что   распыляет суммарный вес  index.php для поисковиков  

еще раз.. перечитайте медленно, пока не дойдет.
ВСЕ ссылки вида
Цитата:
http://domain.com/?id=777  

по умолчанию уже идут на index.php  
вас никто не заставляет писать именно
http://domain.com/index.php?id=777

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

Всего записей: 52737 | Зарегистр. 04-04-2002 | Отправлено: 21:01 15-05-2008
Открыть новую тему     Написать ответ в эту тему

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