最近公司在新開發項目,用的是TP5的框架,開始的時候用的挺舒服,挺好用的,一直到項目在本地開發的差不多之后,開始準備放到服務器上面測試,結果上線之后,直接打不開網站,搗鼓了半天,也不知道哪里除了問題,相當的尷尬,以為是框架的問題,后來發現,跟框架沒有啥關系,于是就從服務器方面找問題;
估摸著可能是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模塊的簡單應用:
Rewrite的所有判斷規則均基于Perl風格的正則表達式,通過以下基礎示例能寫出符合自己跳轉需求的代碼。
目的是如果請求為.php文件,則跳轉至其它域名訪問。
例如:訪問www.xxpt168.cn/a.php跳轉至b.cnwenhui.cn/b.php網頁,訪問www.xxpt168.cn/news/index.php跳轉至b.cnwenhui.cn/news/index.php網頁.注意:不是使用HTML技術中的meta或者javascript方式,因為www.xxpt168.cn/a.php這個文件并不存在,用的是Apache2.2服務器中的Rewrite模塊。
修改 .htaccess或apche的配置文件httpd.conf文件,添加以下內容
RewriteEngine on
#開啟Rewrite模塊
RewriteRule (.*)\.php$ http://b.clin003.com/$1\.jsp [R=301,L,NC]
結果卻沒有啥作用,懷疑可能是文件權限不夠,ok。權限全改成777,結果也沒啥作用
。還好同事告訴我可能是重寫規則的問題,把.htaccess 文件的規則重新找了一份放上去之后確實解決了這個問題,原來是隱藏了index.php 重寫規則出了問題。
附上重寫規則
RewriteEngine on RewriteBase / RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^(.*)$ index.php?s=/$1 [QSA,PT,L]
可以正常訪問網站了~但是新的GUB出現了!找不到模板了!!!
這個算是小問題了吧,但是當時還是找了很久的解決方法才知道,服務器對于文件路徑,嚴格區別大小寫,當時線下在windows環境中,不區分路徑大小寫,所以訪問是正常的,而服務器就不行了,結果就只能默默地都改稱小寫。



