我有一个博客,在查看单个帖子时有一些重写规则。查看由名为 view.php 的文件处理。我在 vhost 配置中使用了一些重写规则,如下所示:
location /view {
rewrite ^/view/([^/.]+)?/?(.*) /view1.php?pid=$1&$query_string;
}
这使得 URL 看起来像这样:
http://domain.com/view/xxxx
其中 xxxx 是帖子 ID。在同一页面上,我有一个社交分享插件,其中包含一个名为 share.php 的文件,该文件位于与 view.php 文件相同的目录中。该插件运行正常,但我在日志中收到以下错误:
FastCGI sent in stderr: "Unable to open primary script: /var/www/domain.com/view/xxxx/share.php (No such file or directory)"
我猜想这与我的 nginx 配置文件中的上述重写规则有关。我该如何解决这个问题?我是否应该在 vhost 配置文件中为 share.php 文件添加特定的重写规则?
这是我的 php 配置:
location ~ \.php$ {
root /var/www/domain.com;
fastcgi_busy_buffers_size 256k;
fastcgi_temp_file_write_size 256k;
fastcgi_intercept_errors on;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_ignore_client_abort on;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
答案1
这里的重要参数是 SCRIPT_FILENAME 参数。您可以将该行更改为 $document_root/share.php,或者,如果您愿意,可以更改为 /var/www/domain.com/share.php $fastcgi_script_name 使用 requestm 位置作为路径
问候