请问我如何使用htaccess做到这一点
if (url has not parameter ?down=true)
redirect back
else
do noting
end if
示例
example.com/upload/file.pdf//它不能下载文件
example.com/upload/file.pdf?down=true//必须下载文件
请帮助我:)
这是我的htaccess文件
RewriteEngine on
RewriteRule ^upload/file/(.*) http':'/'/www'.example'.org'/down.php?file=$1 [L]
这是向下的.php页面
<?php
session_start();
if(isset($_SESSION["user_id"])){
if(isset($_GET["file"])) $file = mysql_escape_string($_GET["file"]);
$file = "http://www.example.org/upload/file/".$file;
$file = preg_replace("/ /", "%20", $file);
header('Content-Description: File Transfer');
header('Content-Type: application/octet-stream');
header('Content-Disposition: attachment; filename='.basename($file));
header('Expires: 0');
header('Cache-Control: must-revalidate');
header('Pragma: public');
//header('Content-Length: ' . filesize($file));
readfile($file);
exit;
}else{
header('Location:login.php');
}
exit();
您需要RewriteCond
中的%{QUERY_STRING}
变量来检查像这样的重定向。
RewriteEngine On
RewriteCond %{QUERY_STRING} !(^|&)down=true($|&)
RewriteRule example'.com'/upload'/file'.pdf /index.php [L]
如果您的RewiteCond
在查询字符串中有一个down=true
,则不要应用以下规则,否则将所有请求重写为/index.php