今天賣給客戶的一個源碼,客戶說驗證碼不能顯示,我在自已的Centos7.3 ngnix上裝完后可以顯示,沒有問題。
我又在Windows服務器 apache+php5.2環境下,重新安裝,結果問題出現了,我把驗證碼的網址,復制到地址欄執行,顯示就提示:“No input file specified.”
啟用REWRITE的偽靜態功能的時候,首頁可以訪問,而訪問內頁的時候,就提示:“No input file specified.”
原因在于使用的PHP是fast_cgi模式,而在某些情況下,不能正確識別path_info所造成的錯誤,Wordpress的偽靜態也有一樣的問題。
Wordpress程序默認的.htaccess里面的規則:
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /index.php/$1 [L]
“No input file specified.”,是沒有得到有效的文件路徑造成的。
修改偽靜態規則,如下:
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /index.php?/$1 [L]
有沒有發現不同?
其實就是在正則結果“/$1”前面多加了一個“?”號,問題也就隨之解決了。
最后問題解決了,真的好高興。