将目录位置重写为php文件nginx

时间:2018-07-31 20:48:25

标签: php .htaccess nginx mod-rewrite

我在将/ thumb目录中的.htaccess转换为nginx时遇到困难。

.htaccess文件:

Function<Unit>

我尝试过的事情:

Options +FollowSymLinks
<IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteRule .* ../thumb.php [L,QSA]
</IfModule>

这些无效。

编辑:我想我找到了问题,但是我仍然对解决方案感到困惑。 我做了一个小的echo PHP文件进行测试,所有未以扩展名结尾的结果似乎都能正常工作。任何以任何扩展名结尾的网址都将返回404。

http://www.example.com/thumb工作
http://www.example.com/thumb/jsdlfjfds工作
http://www.example.com/thumb/jsdlfjfds/sfjlkdfjldf工作
http://www.example.com/thumb/asldkjfls.png不起作用
http://www.example.com/thumb/zxcvmfds/asldkjfls.jpg不起作用

如何重写完整的URL,包括/thumb.php的所有扩展名?我一直以为这个正则表达式的意思是带有扩展名^(。*)$的完整URL?

thumb.php

location /thumb {
    rewrite ^(.*)$ /thumb.php;
}

location /thumb {
    index thumb.php;
    rewrite ^/thumb/(.*)$ /thumb.php;
}

1 个答案:

答案 0 :(得分:0)

还有一个与文件扩展名匹配的位置,看来这两个文件不能并存。它们需要放在嵌套的位置。

location /thumb {
        location ~* ^.+\.(jpg|jpeg|gif|png|bmp|webp|svg|ai|eps)$ {
                access_log off;
                log_not_found off;
                expires max;
                rewrite ^(.*)$ /thumb.php;
        }
        rewrite ^(.*)$ /thumb.php;
}