Kohana – специфичный для контроллера .htaccess

Я пытаюсь установить некоторые правила htaccess для конкретного контроллера Kohana. В основном это делать с загрузкой формы. Большинство сайтов не хотят допускать большие загрузки, поэтому php.ini останется с рекомендуемыми настройками.

Однако в одном месте требуется большая загрузка файла. У меня есть следующие опции для добавления в мой root .htaccess:

php_value max_input_time 60000 php_value post_max_size "1GB" php_value upload_max_filesize "1GB" php_value memory_limit "128MB" 

Но я не знаю, что делать, чтобы применить его только для одного контроллера (например, http://www.mysite.com/massiveupload ).

Любая помощь будет оценена по достоинству.

Есть еще одно решение. Снова благодаря @LazyOne для подсказки. Это намного опережает, но для этого требуется обновить конфигурацию Apache напрямую (чтобы вы не могли развернуть его на общем хостинге).

Все, что вам нужно сделать, это добавить это в свой httpd.conf или vhosts.conf (внутри <Directory> или <VirtualHost> в соответствии с документами Apache ).

 <LocationMatch /massiveupload> php_flag max_input_time 60000 php_value post_max_size 1024M php_value upload_max_filesize 1024M php_value memory_limit 128M </LocationMatch> 

Перезагрузите сервер, и он должен работать!

Обратите внимание, что хотя LocationMatch анализирует /massiveupload как регулярное выражение, мы не можем использовать ^/massiveupload (обратите внимание на символ ^ чтобы он соответствовал началу строки). Это связано с тем, что он не сработает, если вы используете ModRewrite (который изменяет окончательный URL-адрес запроса).

Обратите внимание: вы не должны делать upload_max_filesize и post_max_size одинаковым размером, потому что, если вы загружаете файл, который только достигает предела upload_max_filesize , любые другие данные будут приводить к превышению значения post_max_size и представление формы не будет выполнено.

То, что предложили @LazyOne, довольно легко выполнить на самом деле.

Рассмотрим эту структуру папок (только перечисление наиболее важных файлов / папок):

 application/ bootstrap.php lib/ kohana-3.0.8/ modules/ system/ public_html/ <----- this is your DOCUMENT_ROOT .htaccess index.php 

И подумайте, что вы используете по умолчанию Kohana's .htaccess:

 RewriteEngine On RewriteBase / <Files .*> Order Deny,Allow Deny From All </Files> RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule .* index.php/$0 [PT] 
  1. Теперь создайте папку upload/ в вашем public_html/ .
  2. Скопируйте оба .htaccess и index.php из DOCUMENT_ROOT в папку upload/ .
  3. Отредактируйте свою upload/.htaccess : (отображаются только новые измененные строки)

     php_flag max_input_time 86400 php_value post_max_size 1536M php_value upload_max_filesize 1024M RewriteEngine On RewriteBase /upload/ ... RewriteRule .* index.php/upload/$0 [PT] 
  4. Отредактируйте файл upload/index.php и обновите все пути ($ application, $ modules, $ system). Вы можете загрузить весь тестированный пакет

  5. Создайте контроллер загрузки.

Кроме того, вы можете разбить index.php на две части (вырезать после определения путей), чтобы вы не дублировали весь файл.

Настройка вроде этого очень хорошо работала для меня, и вы можете скачать тестовое приложение отсюда: http://d.pr/ioYk