在你的Apache安裝文件夾conf里找到httpd.conf文件
搜索LoadModule rewrite_module modules/mod_rewrite.so 如果前面有注釋符號(hào)#,請(qǐng)去掉。
搜索Options FollowSymLinks,然后將它下面的AllowOverride None 修改為AllowOverride All;
【1】
沒想到遇見了 No input file specified 因?yàn)轫?xiàng)目用了URL route ,估摸著可能是rewrite的問題。
記錄一下解決方案。
1.檢查doc_root 是否設(shè)置此值
2.檢查.hta文件 , 很多框架都是index.php當(dāng)入口文件。
默認(rèn)的
RewriteRule ^(.*)$ index.php/$1 [QSA,PT,L]
規(guī)則在apache fastcgi模式下會(huì)導(dǎo)致No input file specified.
修改成
RewriteRule ^(.*)$ index.php [L,E=PATH_INFO:$1]
就OK,地址正常重寫。
【2】
我們都知道,使用偽靜態(tài)相對(duì)來(lái)說,對(duì)搜索引擎比較友好,而我在Dreamhost的空間上啟用REWRITE的偽靜態(tài)功能的時(shí)候,首頁(yè)可以訪問,而訪問內(nèi)頁(yè)的時(shí)候,就提示:“No input file specified.”。
百度搜索了一下,發(fā)現(xiàn)還有其它空間商也有此問題,原因在于空間所使用的PHP是fast_cgi模式,而在某些情況下, 不能正確識(shí)別path_info所造成的錯(cuò)誤,就是Wordpress也有一樣的問題,還好找到了解決方案!
我們首先來(lái)看一下Wordpress及Typecho等程序默認(rèn)的.htaccess里面的規(guī)則:
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /index.php/$1 [L]
而提示是說:“No input file specified.”,也就是說沒有得到有效的文件路徑。在Google中找到了解決方案,就是修改一下偽靜態(tài)規(guī)則,如下:
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /index.php?/$1 [L]
在正則結(jié)果“$1”前面多加了一個(gè)“?”號(hào),問題也就隨之解決了。