要将我的小项目(不基于已知框架之一)包含到现有网站中,我已将以下配置添加到 Nginx
server {
listen 80 default_server;
server_name localhost;
access_log /var/log/nginx/dev.access.log;
error_log /var/log/nginx/dev.error.log;
root /var/www;
index index.php;
[...]
location /www.my-project.com {
alias /var/www/www.my-project.com/web;
index index.php;
if (-f $request_filename) { break; }
rewrite ^(.*)$ /www.my-project.com/index.php last;
location ~ /[^/]+/index\.php$ {
include fastcgi_params;
fastcgi_pass unix:/var/run/fcgi.sock;
fastcgi_param SCRIPT_FILENAME $document_root/index.php;
}
}
一切正常(除了我希望防止在 location 指令中列出子目录名称),所以我可以调用http://localhost/www.my-project.com
. 但是当http://localhost/www.my-project.com.blabla
从上面调用位置指令时,我的内部错误页面被提供。所以我尝试将位置指令更改为
location ~ ^/www\.my-project\.com(/|$) {
但这会导致任何现有文件(CSS、JS ...)被重写为 index.php,然后返回 404 本身。为什么位置的变化会导致这种可怕的行为,我看不出location /www.my-project.com
和之间没有逻辑上的区别location ~ ^/www\.my-project\.com(/|$)
。