1

假设我正在使用 Apache,并且我有一个示例 Web 文件夹,例如:

http://myserver.com/test/

在这个文件夹中,我有以下文件:

  • 索引.html
  • img.php
  • 样本.jpg
  • .htaccess

具有以下index.html代码:

<html>
    <body>
         <img src="sample.jpg" />
    </body>
</html>

具有以下img.php代码:

<?php
    if(!isset($_GET["path"])){
       exit()
    }
?>
<html>
    <body>
         <img src="<?php echo $_GET["path"] ?>" />
    </body>
</html>

我喜欢http://myserver.com/test/sample.jpg显示http://myserver.com/test/img.php?path=sample.jpg内容 (没有 URL 更改)

在网上大量搜索后,我编写了以下代码,但它不起作用:/

RewriteEngine On
RewriteCond %{REQUEST_URI} \.(png|gif|jpe?g)$ [NC]
RewriteCond %{SCRIPT_FILENAME} \.(php|html)$ [NC]
RewriteCond %{REQUEST_FILENAME} -f
RewriteRule ^(.+)$ /test/img.php?path=$1 [L]

可能有一个!放在第三行,但我不知道确切的位置

4

2 回答 2

1

用这个改变你的 .htaccess 代码:

Options +FollowSymLinks -MultiViews
# Turn mod_rewrite on
RewriteEngine On
RewriteBase /test/

# block direct access to images
RewriteCond %{HTTP_REFERER} !^http://(www\.)?myserver\.com/ [NC]
RewriteRule ^(.+?\.(?:png|gif|jpe?g))$ img.php?path=$1 [L,NC]
于 2013-08-02T13:16:13.867 回答
1

要将图像输出为 base64,您可以使用以下内容:

<img src="data:image/jpg;base64,<?php echo base64_encode(file_get_contents('/path/to/image.jpg'));?>"/>

请记住这是服务器路径,而不是文档根目录,因此您可能需要$_SERVER['DOCUMENT_ROOT']在正常图像文件路径前面添加

于 2013-08-02T17:04:44.303 回答