天天看點

Thinkphp3.2 僞靜态以及thinphp3.2去掉index.php方法

   一般在thinkphp開發的項目中我們都需要隐藏到入口檔案,那麼具體需要怎麼做呢。這裡簡單說一下。

   一, 這裡我們是一apache為例。打開httpd.config,找到modules/mod_rewrite.so這一行。把前面的#去掉。這裡順便提一下關于Rewrite這子產品其實是主要的功能就是實作URL的跳轉和隐藏真實位址,基于Perl語言的正規表達式規範。平時幫助我們實作拟靜态,拟目錄,域名跳轉,防止盜鍊等功能,隻有開啟加載這個配置才能實作僞靜态以及隐藏入口檔案的作用。

   二, 還是在httpd.config中搜尋AllowOverride none,将AllowOverride none改為AllowOverride all。這裡順便提一嘴AllowOverride none的意思是.htaccess 檔案将被完全忽略。當此指令設定為 All 時,所有具有 “.htaccess” 作用域的指令都允許出現在 .htaccess 檔案中。

   三,在項目的配置檔案中'URL_MODEL'=>'2',這個可以根據項目需求選擇放在公共配置檔案中還是單一子產品的項目中。

   四,修改或者建立一個.htaccess的檔案裡面寫入

<IfModule mod_rewrite.c>
     RewriteEngine on
     RewriteCond %{REQUEST_FILENAME} !-d
     RewriteCond %{REQUEST_FILENAME} !-f
     RewriteRule ^(.*)$ index.php/$1 [QSA,PT,L]
    </IfModule>
           

然後儲存 重新開機運作環境就可以看到隐藏了index.php。而僞靜态化 基本也是完成的 但是這裡提一嘴,很多實用thinkphp架構的使用者可能有個毛病 就是在模闆中 U方法的使用,比如給test方法傳值id=1 有可能在模闆檔案中這麼寫

{:U('test')}?id=1
           
這麼寫的确可以将值傳入,但是反應在浏覽器上就會使www.xxxx.com/Index/text.html?id=1,那麼就算是按照以上的方法設定僞靜态也沒有用,因為thinkphp不會将其轉化為你在架構中設定的那種。是以要注意的是在模闆中傳值盡量使用tp手冊所寫的方法,剛才的傳值應該為
{:U('test',array('id'=>1))}