Nginx
NGINX漂亮的網址:沒有指定輸入文件
我一直在努力使用 NGINX 配置。我已經建立了一個開發環境(本地筆記型電腦),其配置支持搜尋引擎友好 (SEF) url,但相同的配置似乎不適用於我的測試伺服器。
本地配置:
server { server_name example; root /home/arciitek/git/example/public; client_max_body_size 500M; location /collection/ { try_files $uri $uri/ /collection/index.php$args; index index.php; } location / { index index.html index.htm index.php; try_files $uri $uri/ /index.php?q=$uri&$args; } location ~ \.php$ { include /etc/nginx/fastcgi_params; fastcgi_pass unix:/var/run/php5-fpm.sock; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME /home/arciitek/git/example/public/$fastcgi_script_name; } }
這工作正常。現在在測試環境中它看起來像這樣:
server { server_name dev.example.com; access_log /srv/www/dev.example.com/access.log; error_log /srv/www/dev.example.com/error.log debug; root /srv/www/dev.example.com/public; location /collection/ { try_files $uri $uri/ /collection/index.php$args; index index.php; } location / { index index.html index.htm index.php; try_files $uri $uri/ /index.php?q=$uri&$args; } location ~ \.php$ { include /etc/nginx/fastcgi_params; fastcgi_pass unix:/var/run/php-fastcgi/php-fastcgi.socket; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME /srv/www/dev.example.com/public/$fastcgi_script_name; }
在我的開發環境中一切都很好。但是在我的測試環境中,當我在瀏覽器中呼叫一個帶有漂亮添加的 url 時:collection/
$$ brand $$/$$ product $$. 我得到:
No input file specified
錯誤。請注意,如果我呼叫以 collection/ 結尾的 url,一切正常.. 任何人都可以幫我解決這個問題嗎?如果需要更多資訊,請告訴我..
我已經想通了。我的符號連結有問題…感謝您的幫助。對於那些遇到類似問題的人,請確保您的符號連結
/etc/nginx/sites-enabled/
指向正確的文件/etc/nginx/sites-available/
無需在 PHP 位置塊中單獨指定 SCRIPT_FILENAME。它已經在 /etc/nginx/fastcgi_params 文件中定義。
所以,刪除
fastcgi_param SCRIPT_FILENAME
線。另外,為了 PHP 腳本的安全性,我要補充:
fastcgi_split_path_info ^(.+\.php)(/.+)$;
到 PHP 位置塊。
否則,你確定你有這個
/collection/index.php
地方嗎?編輯:
正如@AlexeyTen 下面提到的,替換這個:
try_files $uri $uri/ /collection/index.php$args;
和:
try_files $uri $uri/ /collection/index.php?$args;