Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: Общие вопросы > взаимодействие htaccess и php скрипта


Автор: sneJok 15.5.2011, 00:05
Нужно запустить php-скрипт при редиректе с .htaccess.
Схема: ссылка на папку с htaccess -> перенаправляемся -> дергаем скрипт. 

Автор: $дмитрий 15.5.2011, 01:38
Оно?
Код

Redirect 301 / http://mysite.ru/code.php

Автор: sneJok 15.5.2011, 05:00
$дмитрий, не совсем. Нужно, чтобы подключилось к htaccess, а он в свою очередь - обратился к скрипту и (независимо от скрипта) выдал ссылку на скачивание файла.

Что-то похожее нашел, правда в настройках конфига, но тоже подошло бы:
Код

<Directory /var/www/site/www/>
    Action downme /cgi-bin/downme.pl
    SetHandler downme
</Directory>


Как я понял при переходе в директорию запускается перл-скрипт?
Только что-то никак не получилось прикрутить php вместо перл-скрипта.

Автор: Sanchezzz 15.5.2011, 22:26
обратится не получится а вот подставить желаемое название можно.
Код

Options -Indexes 
ErrorDocument 404 /404.php

AddDefaultCharset utf-8
AddCharset utf-8 *
<IfModule mod_charset.c>
CharsetSourceEnc utf-8
CharsetDefault utf-8
</IfModule>

<IfModule mod_rewrite.c>
  Options +FollowSymLinks
  RewriteEngine On

  RewriteRule ^/download/(.*)/(.*)$ /download.php?userdir=$1&idfile=$2 [L]
</IfModule>



Тесть что будет при запросе /download/<название папке>/ id файла       примерно так       /download/mydir/17859

download.php 
Код

<?
$idfile = (!empty($_GET['idfile']))?  intval($_GET['idfile']): 0;
итд...
?>


Как вариант можно сделать так .
RewriteRule ^/download/(.*) $ /download.php [L]  
При попадание на этот скрипт делаем в скрипте  редерект на нужный нам адрес.

Автор: sneJok 17.5.2011, 16:02
Sanchezzz, дело то в том, что редиректившись на нужный адрес, доступ к этому адресу нужно ограничить. Например - 1 раз обратиться можно, 2 раза и т.д.
А тут получается - редиректнулся, получил нужный адрес и всё, дальше работаешь с нужным адресом. А нужно, чтобы этот адрес был доступен, например, только при первом обращении. Т.е. доступ регулировать через скрипт.

Короче проще - чисто на модулях Apache 2.2.х можно ограничить скорость\число подключений к определнным директориям? Гуглялазание не дало нужного эффекта, кроме как модули под старую апачу. Большинство вообще под никсы. Надо под винду.

Автор: Sanchezzz 18.5.2011, 10:23
Задача не такая и не победимая можно извратится как угодно на пхп.

Зашел на страницу А средствами PHP проверил записал в базу разрешил перенаправил его.

На странице B Спросил а если у тебя пропуск и разрешение на работу ? а нету ну и иди от суда иммигрант несчастный. 

Автор: sneJok 18.5.2011, 13:09
Sanchezzz, было бы прекрасно решить задачу на PHP.
Всё понятно и ясно, но неизвестно как воплотить одно звено в жизнь.

Пример
Есть простой файл, который просто загружается посредством Apache, например 1.rar.
К нему нужно сделать возможным обращение лишь определенное число раз. Хорошо, сделаем переход через php-скрипт к 1.rar. Php-скрипт зарегистрирует обращения к нему.
Как сделал бы какой-нибудь менеджер загрузок: Обращается через php-скрипт, получает доступ к 1.rar. Начинает подключаться вторым потоком к 1.rar уже напрямую. Затем третьим, пятым и тд. То есть всё в обход скрипта. А надо, чтобы контролировал каждое обращение.

Автор: $дмитрий 18.5.2011, 14:33
Опиши в деталях какой сервис пробуешь написать

Цитата

А нужно, чтобы этот адрес был доступен, например, только при первом обращении
К нему нужно сделать возможным обращение лишь определенное число раз

Все-таки 1 раз должен быть загружен файл или несколько?
---
Отдаешь через скрипт + ставишь метку что данный пользователь начал грузить файл
Если интересует ДОкачка файла смотри $_SERVER['HTTP_RANGE']


Автор: sneJok 18.5.2011, 15:02
$дмитрий, файловый HTTP - архив, с регулируемым числом потоков для каждого пользователя. Число потоков варьируется и устанавливается сервером. Пользователю выделяется 10 потоков(подключений) и на эти 10 потоков он может скачать файлы на сервере. Поэтому нужно знать - сколько сейчас подключений выполнено пользователем к архиву (например, у него идет скачивание 2 файлов в 2 потока) и сколько еще можно ему выделить из 10 (в данному случае 6) и чётко их ограничивать.
Как ограничить подключения к файлу? - единственное, что непонятно.

По поводу отдачи через PHP-скрипт в инете писали, да и пробовал реализовывать на практикте - скорость скачивания падает и по ресурсам много кушает. Ведь, если принять во внимание 100 таких скачек, то наверняка PHP заломит сервер.

Автор: $дмитрий 19.5.2011, 20:45
Возможно http://habrahabr.ru/blogs/nginx/76100/

Автор: sneJok 20.5.2011, 17:25
$дмитрий, Нужно заточить под апач. Походу придётся ковырять перл-скриптец(

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)