2
我的目標是擁有通配符子域,每個子域都通過自己的目錄服務於php。例如,「www」子域服務於「public_html/www」,「blog」服務於「public_html/blog」。這裏是我的CURENT nginx的配置,讓這部分工作:
server {
listen 80;
server_name ~^(.*)\.example\.com$;
root /var/www/example.com/public_html/$1;
index index.php index.htm;
location ~ \.php$ {
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_pass unix:/var/run/php5-fpm.sock;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
}
爲了測試,我在博客目錄www目錄和index.htm的一個index.php文件。博客子域工作正常,並顯示博客目錄中的index.htm。
但是,www子域不起作用,頁面返回「沒有指定輸入文件」。如果我將「www」硬編碼到根指令而不是「$ 1」中,它可以用於「www」子域,但當然博客也會顯示該內容。
所以,似乎PHP特定位置內的$ document_root沒有評估代表子域的根指令的$ 1。什麼需要改變,或者如何確保在使用$ document_root時評估根目錄?
看起來像這樣做!稍後我會繼續進行一些進一步的測試,但現在,僅通過這一更改就可以消除錯誤並顯示我的內容。謝謝! – justinvoelker