最近公司在新開發(fā)項目,用的是TP5的框架,開始的時候用的挺舒服,挺好用的,一直到項目在本地開發(fā)的差不多之后,開始準備放到服務(wù)器上面測試,結(jié)果上線之后,直接打不開網(wǎng)站,搗鼓了半天,也不知道哪里除了問題,相當(dāng)?shù)膶擂危詾槭强蚣艿膯栴},后來發(fā)現(xiàn),跟框架沒有啥關(guān)系,于是就從服務(wù)器方面找問題;
估摸著可能是rewrite的問題。分享一下處理的流程。
在conf目錄下httpd.conf中找到
LoadModule rewrite_module modules/mod_rewrite.so
這句,去掉前邊的注釋符號“#”,或添加這句。
允許在任何目錄中使用“.htaccess”文件,將“AllowOverride”改成“All”(默認為“None”):
# AllowOverride controls what directives may be placed in .htaccess files.
# It can be “All”, “None”, or any combination of the keywords:
# Options FileInfo AuthConfig Limit
# AllowOverride All
Apache Rewrite模塊的簡單應(yīng)用:
Rewrite的所有判斷規(guī)則均基于Perl風(fēng)格的正則表達式,通過以下基礎(chǔ)示例能寫出符合自己跳轉(zhuǎn)需求的代碼。
目的是如果請求為.php文件,則跳轉(zhuǎn)至其它域名訪問。
例如:訪問www.geizy.cn/a.php跳轉(zhuǎn)至b.cnwenhui.cn/b.php網(wǎng)頁,訪問www.geizy.cn/news/index.php跳轉(zhuǎn)至b.cnwenhui.cn/news/index.php網(wǎng)頁.注意:不是使用HTML技術(shù)中的meta或者javascript方式,因為www.geizy.cn/a.php這個文件并不存在,用的是Apache2.2服務(wù)器中的Rewrite模塊。
修改 .htaccess或apche的配置文件httpd.conf文件,添加以下內(nèi)容
RewriteEngine on
#開啟Rewrite模塊
RewriteRule (.*)\.php$ http://b.clin003.com/$1\.jsp [R=301,L,NC]
結(jié)果卻沒有啥作用,懷疑可能是文件權(quán)限不夠,ok。權(quán)限全改成777,結(jié)果也沒啥作用。還好同事告訴我可能是重寫規(guī)則的問題,把.htaccess 文件的規(guī)則重新找了一份放上去之后確實解決了這個問題,原來是隱藏了index.php 重寫規(guī)則出了問題。
附上重寫規(guī)則
RewriteEngine on RewriteBase / RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^(.*)$ index.php?s=/$1 [QSA,PT,L]
可以正常訪問網(wǎng)站了~但是新的GUB出現(xiàn)了!找不到模板了?。。?/p>
這個算是小問題了吧,但是當(dāng)時還是找了很久的解決方法才知道,服務(wù)器對于文件路徑,嚴格區(qū)別大小寫,當(dāng)時線下在windows環(huán)境中,不區(qū)分路徑大小寫,所以訪問是正常的,而服務(wù)器就不行了,結(jié)果就只能默默地都改稱小寫。