【问题标题】:.htaccess rewrite image file to php script.htaccess 将图像文件重写为 php 脚本
【发布时间】:2012-03-31 00:35:04
【问题描述】:

这是我现在在.htaccess 中拥有的内容,将来应该可以使用:

RewriteEngine On

RewriteCond %{HTTPS} !=on
RewriteRule ^/?(.*) https://%{SERVER_NAME}/$1 [R,L]

RewriteCond %{REQUEST_FILENAME} -s [OR]
RewriteCond %{REQUEST_FILENAME} -l [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^.*$ - [NC,L]
RewriteRule ^.*$ index.php [NC,L]

问题是:

我怎样才能重写/tmp/some_image.png -> /image.php?file=some_image.png

我试图制定自己的规则,但没有成功。

谢谢。

【问题讨论】:

    标签: .htaccess mod-rewrite apache2 rewrite


    【解决方案1】:

    /tmp 是您的网络服务器可以访问的目录吗?我希望它是一个单独的 /tmp 文件夹,而不是服务器的实际 /tmp,因为这会带来安全风险。

    无论如何,如果图像是物理文件,那么您需要在重写后强制使用 HTTPS 并在条件检查它是文件还是目录之前放置:

    RewriteRule ^/tmp/([^\.]+)\.png$   /image.php?file=$1.png [NC,L]
    

    您也可以检查其他扩展:

    RewriteRule ^/tmp/([^\.]+)\.(png|jpg|gif)$    /image.php?file=$1.$2 [NC,L]
    

    或者,如果您不在乎(所有内容都是 tmp 文件夹中的图像。虽然我不建议这样做)

    RewriteRule ^/tmp/(.*)$    /image.php?file=$1 [NC,L]
    

    如果它不是物理文件,您可以将其中任何一个放在规则的末尾。

    【讨论】:

    • 如果图像的文件名中包含.,则此规则RewriteRule ^/tmp/([^\.]+)\.(png|jpg|gif)$ /image.php?file=$1.$2 [NC,L] 将不起作用,例如。 file.name.jpg
    • 使用RewriteRule ^/tmp/(.+)\.(png|jpg|gif)$ index.php?file=$1.$2 [NC,L],以防您希望允许文件名包含多个.
    【解决方案2】:

    正确答案是:

    RewriteRule ^/?tmp/(.*\.png)$ captcha.php?file=$1 [L]
    

    感谢Humbedooh@freenode

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-05-22
      • 1970-01-01
      • 2014-09-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多