3

私の電子ブック リーダー (Sony PRS-T1) の組み込みブラウザーは非常に愚かで、.epub ファイルをダウンロードする代わりにテキスト ファイルとして開きたいので、この .htaccess を使用してブラウザーに強制的に .epub ファイルをダウンロードさせようとしました。ファイル:

<FilesMatch "\.(?i:epub)$">
  ForceType application/octet-stream
  Header add Content-Disposition "attachment"
</FilesMatch>

ただし、これにより内部サーバー エラーが発生します。

内部サーバーエラー

サーバーで内部エラーまたは構成ミスが発生したため、リクエストを完了できませんでした。

サーバー管理者の webmaster@localhost に連絡して、エラーが発生した時刻と、エラーの原因となった可能性のある操作を知らせてください。

このエラーの詳細については、サーバー エラー ログを参照してください。

省略してHeader add Content-Disposition "attachment"もエラーは発生しませんが、ブラウザはファイルをダウンロードしません:(

私は何か間違ったことをしていますか?内部サーバー エラーはどこから発生しますか?

[2013 年 4 月 11 日編集]

このスレッドの「人気の質問バッジ」を獲得したばかりで、情報を追加することを思い出しました。

私は最終的に、次のphp関数を使用してSonyのPRS-T1ブラウザーでダウンロードを強制することができました

function startDownload($path, $mimeType) {
if(!file_exists($path)) {
// File doesn't exist, output error
exit('file not found');
} else {
$size = filesize($path);
$file = basename($path);

// Set headers
header("Pragma: public"); // required
header("Expires: 0");
header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
header("Cache-Control: private",false); // required for certain browsers
header("Content-Description: File Transfer");
header("Content-Disposition: attachment; filename=\"$file\"");
header("Content-Type: $mimeType");
header("Content-Transfer-Encoding: binary");
header("Content-Length: $size");
// Read the file from disk
readfile($path);
}

exit();
}

いつか誰かを助けることを願っています。

4

3 に答える 3

3

これが答えかもしれません:

http://digomelo.net/node/24

モジュール ヘッダーは、デフォルトでは Apache で有効になっていません。そのため、手動で有効にする必要があります。

このモジュールを有効にするには、root としてログインし、mods-available/headers.load から mods-enabled へのシンボリック リンクを作成します。その後、apacheをリロードして完了です。そのために、このコマンドを使用しました。

su - cd
/etc/apache2/mods-enabled/ ln -s ../mods-available/headers.load
headers.load sh /etc/init.d/apache2 force-reload
于 2012-04-10T08:27:30.337 に答える
1

htaccess ファイルでこれを使用する前に、headers モジュールが有効になっていることを確認することもできます。headers モジュールが有効になっていない場合、次の行はエラーを生成します。

Header set Content-Disposition "attachment"

headers モジュールが有効な場合にのみ mp3 ファイルのダウンロードを強制する例を次に示します。

<IfModule mod_headers.c>
    <FilesMatch "\.(mp3|MP3)$">
        ForceType audio/mpeg
        Header set Content-Disposition "attachment"
        Allow from all
    </FilesMatch>
</IfModule>

注: モジュールを有効にするわけではありません。モジュールが有効になっていない場合は、IfModule タグ内のすべてを無視します。

Apache モジュールを有効にするには、httpd.conf ファイルを編集するか、wamp サーバーで wamp トレイ アイコンをクリックして [Apache -> Apache Modules -> headers_module] を選択するか、チェックされていることを確認する必要があります。

于 2013-01-28T21:35:12.530 に答える
0

ubuntu の場合、次を使用して apache2 ヘッダー モジュールを有効にするショートカットがあります。

sudo a2enmod headers

問題解決しました^_^

于 2014-03-26T14:28:36.740 に答える