Nginx 重写规则与 Apache 版本相当

Nginx 重写规则与 Apache 版本相当

我正在使用 PHPThumb 脚本调整我博客 www.muylinux.com 上的小滑块/轮播中的图像大小。我已经完成了从 Cherokee(我们使用此网络服务器时遇到问题)到 Nginx 的迁移,但尽管几乎所有东西都运行良好,轮播不显示由 PHPThumb 生成的缩略图,尽管图像实际上位于其链接到的目录中。

例如,这是当前应该显示的图像之一:

www.muylinux.com/wp-content/themes/massivenews/scripts/phpThumb/phpThumb.php?src=/wp-content/uploads/2010/11/Unix.jpg&w=186&h=156&zc=T&q=95

正如您所见,图像就在那里:

www.muylinux.com/wp-content/uploads/2010/11/Unix.jpg

但不知何故,它没有显示在主页的轮播上。

我很确定这是一个重写规则的问题,但我不知道如何解决这个问题。

我已经看到 Apache 中的 RewriteRule 应该是

RewriteRule ^(.*)$ index.php?thumb=$1 [L,QSA]

我不确定“翻译” nginx 规则是否可行,但我猜测它很有可能可行。

有人可以尝试给我 Nginx 的等效重写规则吗?我试过了:

rewrite ^/([^?]*)(?:\?(.*))? index.php?thumb=$1$2;

我是这方面的初学者,但还没有成功。

答案1

如果我理解正确的话,这是一个有点奇怪的情况,通常你不会将对 PHP 文件的请求重写为 index.php。

转换RewriteRule ^(.*)$ index.php?thumb=$1 [L,QSA]为 Nginx 配置语法的最佳方法是使用try_files $uri $uri/ /index.php?thumb=$request_uri;

考虑到请求是针对 PHP 脚本的,您可能需要将其放在 PHP 位置。如果您发布了配置文件,可能会更容易理解。

答案2

终于无需包含新的重写规则以解决问题。

由于插件目录,找不到路径和图像没有执行权限

因此,如果有人遇到此问题,只需访问您的 WordPress 安装,

cd blog_path/wp-content/themes/theme_name

在我的例子中,在那个文件夹中我有一个'脚本' 包含 phpThumb 脚本的子文件夹。因此从该路径,

chmod 755 -R scripts/

然后...问题解决了。

相关内容