我正在尝试为任何人通过mydomain.com/game/admin
url 安排一个位置块,确保用于提取内容的 nginx 服务器存在于/var/www/html/my-cakephp-app/
目录中。我的应用程序是使用 cakephp 框架构建的,其目录结构如下所示:
- /var/www/html/my-cakephp-app/
- 行政
- 配置
- 安慰
- 控制器
- 看法
- webroot(该目录下存在App入口点index.php文件)
我也有位于/var/www/html
目录中的静态 html/css 网站。所以任何有mydomain.com
url 的人也可以看到该网站。
这是我当前的 nginx 服务器块:
server {
listen 80;
listen [::]:80;
root /var/www/html;
index index.html index.htm index.php;
server_name mydomain.com;
location / {
try_files $uri $uri/ =404;
}
location /game/admin {
return 301 /game/admin/;
}
location /game/admin/ {
root /var/www/html/my-cakephp-app/admin/webroot;
try_files $uri $uri/ /game/admin/index.php$is_args$args;
location ~* \.php(/|$) {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/var/run/php/php7.4-fpm.sock;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
}
}
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/var/run/php/php7.4-fpm.sock;
}
location ~ /\.ht {
deny all;
}
}
使用此设置,我的静态网站可以正常工作。但是 cakephp 应用程序在浏览器中给出 404 not found 错误。nginx/error.log 中没有任何错误。
但是当我使用以下 nginx 配置运行时,我的应用程序运行良好。但我必须摆脱我的 html/css 网站。我计划用 wordpress 网站升级 html/css 应用程序。所以我应该能够以父级身份运行 wordpress 网站。
server {
listen 80;
server_name mydomain.com;
root /var/www/html/my-cakephp-app/admin/webroot;
index index.html index.htm index.php;
location / {
try_files $uri $uri/ /index.php$is_args$args;
autoindex on;
}
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/run/php/php7.0-fpm.sock;
}
location ~ /\.ht {
deny all;
}
}
我想不出我在第一个服务器块上做错了什么。任何建议都会非常有帮助。