我想在 nginx 服务器上部署锂,但是只为 Apache 和 IIS 提供了配置。过去我已经成功地为各种应用程序编写了几个 nginx 服务器配置,但我正在努力解决这个问题。
已经在 nginx 和锂论坛上问过这个问题,没有运气。
这是我迄今为止所做的最好的。
root /var/servers/my_app/app/webroot;
location / {
index index.php;
try_files $uri $uri/ index.php;
}
location ~ \.php {
fastcgi_pass unix:/tmp/php.socket;
fastcgi_index index.php;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME /var/servers/my_app/$fastcgi_script_name;
fastcgi_param PATH_INFO $fastcgi_script_name;
}
问题出在 / (根页面)上,每个链接都在 index.php 前面添加,例如,而不是
www.example.com/something
我明白了
www.example.com/index.php/something
不确定这是否与 nginx 配置相关,或者更确切地说,锂在无法检测到 Apache/IIS 环境时会这样做。无论哪种方式,我都无法解决。
另一件事是,当我访问“www.example.com/test”(通过直接 URL 输入)时,页面会正确呈现,但是“www.example.com/test/”(带有斜杠)和“www.example. com/test/anything_here" 已损坏 - 所有链接都附加到当前 URL,例如按下相同的链接会创建以下内容:
www.example.com/test/
www.example.com/test/test
www.example.com/test/test/test
编辑:更新的配置 (很抱歉延迟编辑,但我仍然卡住,最近重新开始解决这个问题)
root /var/server/my_app/app/webroot/;
index index.php index.html;
try_files $uri $uri/ /index.php?$args;
location ~ \.php {
fastcgi_pass unix:/tmp/php.socket;
fastcgi_index index.php;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME /var/servers/my_app/$fastcgi_script_name;
fastcgi_param PATH_INFO $fastcgi_script_name;
}
location ~/\.ht {
deny all;
}
}
正如我在评论中提到的,这会导致所有链接都包含 index.php,它看起来像:
www.example.com/index.php/something
www.example.com/index.php/stylesheet.css