Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: Трудности с mod_rewrite помогите...  (Прочитано 9329 раз)
0 Пользователей и 1 Гость смотрят эту тему.
DDMZ
Гость
« : 06-06-2004 15:00 » 

Как я это уже не пробовал ничего невходит...

Задача:
есть сайт www.site.ru есть файлы www.site.ru/files.zip и www.site.ru/files.rar . а так же страничка на этом сайте с линками.
Если начать скачивать какой либо файл (rar, zip), и при этом поле рефер будет пустым, либо рефер не будет принадлежать www.site.ru то файл скачиваться не должен, а должна вывестись страничка www.site.ru/notaccess.php
а если скачивать со странички с линками (поле рефер будет принадлежать сайту) то все далжно качаться.
Реализация через отдельный скрипт неподходит! (а то сколько уже советов наслушался, хотя задовал вполне конкретный вопрос) т.к. когда скачивается файл скрипт проверяющий неработает! Обязательная реалезация через .htaccess !
(похожее сделано на хостингах narod.ru и amillo.net)


вот начало .htaccess
Код:

RewriteEngine on
RewriteBase /


а вот далше что делать я незнаю...
напиште пожалуйста рабочий пример для задачки...
Записан
RXL
Технический
Администратор

Offline Offline
Пол: Мужской

WWW
« Ответ #1 : 07-06-2004 10:58 » 

Начни с прочтения мануала: http://httpd.apache.org/docs/mod/mod_rewrite.html .
Обрати внимание на команды RewriteCond и RewriteRule.
Кстати, в тексте есть примеры.
Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
DDMZ
Гость
« Ответ #2 : 14-11-2005 12:34 » 

Немогу понять как сделать используя mod_rewrite так, чтобы сравнивать переменные.
Пример:
RewriteCond %{REMOTE_ADDR} %{REMOTE_HOST} [NC]
%{REMOTE_HOST} имеет значение 127.0.0.1
%{REMOTE_ADDR} имеет значение 127.0.0.1

На выходе получаю: RewriteCond: input='127.0.0.1' pattern='%{REMOTE_HOST}' => not-matched
т.е мы сравниваем значение с именем переменной, а не с её значением.

Как сравнить две переменных?
Как вообще можно это сравнение сделать?
Может есть другие способы-методы?

Может можно сделать не припомощи mod_rewrite но в .htaccess ?

Помогите!!!
« Последнее редактирование: 20-12-2007 14:55 от Алексей1153++ » Записан
RXL
Технический
Администратор

Offline Offline
Пол: Мужской

WWW
« Ответ #3 : 15-11-2005 15:01 » 

http://httpd.apache.org/docs/2.0/mod/mod_rewrite.html
Цитата
CondPattern is the condition pattern, i.e., a regular expression which is applied to the current instance of the TestString, i.e., TestString is evaluated and then matched against CondPattern.
Это просто строка и переменные %{} тут не уместны.

В той же доке см. примеры с внешней программой.
« Последнее редактирование: 15-11-2005 15:04 от RXL » Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
DDMZ
Гость
« Ответ #4 : 15-11-2005 16:53 » 

Цитата
В той же доке см. примеры с внешней программой.
Я непонял по какому принципу происходит вызов внешней программы из htaccess =(
Подскажи как она должна выглядеть и запускаться для вышеприведенного сравнения ?
Записан
RXL
Технический
Администратор

Offline Offline
Пол: Мужской

WWW
« Ответ #5 : 15-11-2005 17:59 » new

DDMZ, я ж тебе цитаты из той же доки приведу... Ну, не лучше ли самому прочесть?
Цитата
Syntax:   RewriteMap MapName MapType:MapSource
.........
The MapName is the name of the map and will be used to specify a mapping-function for the substitution strings of a rewriting rule via one of the following constructs:
${ MapName :  LookupKey }
${ MapName : LookupKey | DefaultValue }
.........
For example, you might define a RewriteMap as:

RewriteMap examplemap txt:/path/to/file/map.txt

You would then be able to use this map in a RewriteRule as follows:

RewriteRule ^/ex/(.*) ${examplemap:$1}

The following combinations for MapType and MapSource can be used:
.........
External Rewriting Program
MapType: prg, MapSource: Unix filesystem path to valid regular file

Here the source is a program, not a map file. To create it you can use the language of your choice, but the result has to be a executable (i.e., either object-code or a script with the magic cookie trick '#!/path/to/interpreter' as the first line).
Код:
RewriteMap    _map_name_    prg:/path_to_prog/prog
Данные программа получает из stdin и выводит в stdout.

У меня то же трудности с английским, но понять написанное вполне можно.
« Последнее редактирование: 20-12-2007 14:58 от Алексей1153++ » Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines