PDA

Просмотр полной версии : Обработка обращений к файлам


LowNoise
04.12.2002, 21:32
Приветствую. Вопрос хотел бы задать спецам по Апач-PHP
связке. Задачка вот какого рода:
есть каталог, куда PHP скрипт сбрасывает простые текстовые
файлы (часть работы новостного скрипта, работающего с MySQL). Нужно бы сделать, чтобы прямой доступ к этим файлам в обход PHP-скрипта вызывал запуск скрипта, а не выводил содержимое текстового файла в браузер пользователя (пришедшего, например, с поисковой системы). Заранее спасибо всем.

Stasik
05.12.2002, 00:06
можно запретить доступ...... и в обработке 403 смотреть на REFERRER

RaZEr
05.12.2002, 00:23
Если требуется при обращении к текстовому файлу запустить вместо него скрипт, то нужно настроить mod_rewrite, а если просто закрыть доступ то это делается htaccess:

<Files ~ "*.txt">
Order allow,deny
Deny from all
</Files>

AA666
06.12.2002, 22:54
а можно простым редиректом обойтись, особенно если файлы и скрипт в одной дире

RedirectMatch mydir\/(.+\.txt) /myscript.ptp?file_requested=$1

RaZEr
07.12.2002, 20:01
Да если и в разных тоже, но незнаю почему, но mod_rewrite мне нравиться больше .

LowNoise
09.12.2002, 19:53
Еще вопрос (простите наивность) - знак вопроса при редиректе (RedirectMatch) переводится в urlencode, отчего возникает ссылка на мифический файл. Как этого можно избежать?

AA666
09.12.2002, 21:39
Если в эту часть вопрос - mydir\/(.+\.txt), то его надо с обратным слешем - \?, а если имена файлов русские, тогда в myscript.ptp надо urldecode. А лучше напиши всю cвою строку RedirectMatch и откуда и куда редирект хочешь сделать.

LowNoise
09.12.2002, 21:52
Вот весь .htaccess:

Options -Indexes
RedirectMatch permanent .+\/(.+\.txt) ../uptonews.phtml?f=$1

Знак вопроса пробовал еще раньше экранировать, слеш тоже переводился в %чего-то там. Правда, пробовал все это делать в Апачи под Win.

RaZEr
10.12.2002, 01:37
Лучше воспользуйся mod_rewrite:

RewriteEngine on
RewriteRule ^(.*)\.txt$ uptonews.phtml?f=$1

PS: Незабудь его включить .

AA666
10.12.2002, 02:27
LowNoise не пиши в .htaccess, лучше в конфиге сервера прописать

RaZEr
10.12.2002, 21:54
Как будто на localhost@win32 это чем-то различается ...

AA666
11.12.2002, 02:31
А скинь на мыло конфиг, глянем.

AA666
11.12.2002, 05:57
Какзалось бы при чём тут winda...

RaZEr
12.12.2002, 01:11
Если ты про "localhost@win32", то я имел ввиду, что на локальной машине обычно нет заморочек по безопасности и конфиг сервера не сильно отличается от default . Именно поэтому я был не согласен, что писать лучше в конфиге, нежели в htaccess .

AA666
12.12.2002, 02:58
По идее при каждом обращении к любому файлу в этой дире, сервен должен свериться с .htacess. Так же как нет смысла ему подключать mod_rewrite ради одного простого редиректа, который реализован в core. Для экономии ресурсов.

RaZEr
13.12.2002, 00:08
Да, должно быть будет сэкономлено много ресурсов, ну просто огромное количество ;)

AA666
13.12.2002, 02:29
Зато сразу будет оптимально, лучше чем совсем ничего, согласись :)

RaZEr
13.12.2002, 22:50
Пока что с redirect совсем ничего ...