Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/291.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/amazon-s3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
nginx execute.php as.gif文件重写规则_Php_Nginx_Url Rewriting - Fatal编程技术网

nginx execute.php as.gif文件重写规则

nginx execute.php as.gif文件重写规则,php,nginx,url-rewriting,Php,Nginx,Url Rewriting,这对我来说是一个很大的挑战: mysite.com/cookie/image.php?perma=perma1 就这样, mysite.com/cookie/perma1.gif 或 作为 因此,每当我在后台请求perma1.gif或perma2.gif时,nginx都会运行 image.php?perma=perma1 及 因此,对于您的问题,nginx server.conf的正确规则应该是: location ~* ^/cookie/(.*)\.(gif)$ { try_fi

这对我来说是一个很大的挑战:

mysite.com/cookie/image.php?perma=perma1
就这样,

mysite.com/cookie/perma1.gif

作为

因此,每当我在后台请求
perma1.gif或perma2.gif
时,nginx都会运行

image.php?perma=perma1


因此,对于您的问题,nginx server.conf的正确规则应该是:

location ~* ^/cookie/(.*)\.(gif)$ {
    try_files $uri $uri/ /cookie/image.php?perma=$1;
}
这条规则意味着:

  • 只能在子文件夹/cookie中使用/
  • 只能由gif文件类型使用
  • 正在尝试是否存在gif
  • 如果没有,则重定向到cookie/image.php
  • 并将gif文件名设置为GET perma

  • 。。。这应该可以解决您的问题。

    因此,对于您的问题,nginx server.conf的正确规则应该是:

    location ~* ^/cookie/(.*)\.(gif)$ {
        try_files $uri $uri/ /cookie/image.php?perma=$1;
    }
    
    这条规则意味着:

  • 只能在子文件夹/cookie中使用/
  • 只能由gif文件类型使用
  • 正在尝试是否存在gif
  • 如果没有,则重定向到cookie/image.php
  • 并将gif文件名设置为GET perma
  • 。。。这应该能解决你的问题

    因此,每当我在后台请求perma1.gif或perma2.gif时,nginx都会运行

    这意味着
    try_files
    是完全不必要的,不仅@MatWer的回答总是试图检查是否存在,例如
    /cookie/perma1.gif
    ,而且还检查目录
    /cookie/perma1.gif/
    (这是两个不必要的系统
    stat
    调用)

    最有效的方法是在
    服务器
    上下文(任何
    位置
    之外)中进行简单的重写:

    因此,每当我在后台请求perma1.gif或perma2.gif时,nginx都会运行

    这意味着
    try_files
    是完全不必要的,不仅@MatWer的回答总是试图检查是否存在,例如
    /cookie/perma1.gif
    ,而且还检查目录
    /cookie/perma1.gif/
    (这是两个不必要的系统
    stat
    调用)

    最有效的方法是在
    服务器
    上下文(任何
    位置
    之外)中进行简单的重写:


    非常感谢。这似乎是一个更简洁的解决方案。没错,它还检查目录的存在!但是在我的用例中,在将输入传递到php之前,检查是否有ressource是非常重要的。所以,有了try_文件的解决方案,您就不想陷入重写问题的错误分析了。谢谢。这似乎是一个更简洁的解决方案。没错,它还检查目录的存在!但是在我的用例中,在将输入传递到php之前,检查是否有ressource是非常重要的。因此,有了try_文件的解决方案,您就不想陷入重写问题的错误分析中。
    image.php?perma=perma2 
    
    location ~* ^/cookie/(.*)\.(gif)$ {
        try_files $uri $uri/ /cookie/image.php?perma=$1;
    }
    
    rewrite ^/cookie/(.*)\.gif$ /cookie/image.php?perma=$1 last;