現在是晚上12點,tp3.2.3僞靜態困惑我好幾天啦,所以我今天決定一定要實現這個僞靜態,搞不出來不睡覺啦
在我聰慧的大腦和頑強的意志力和高度的自律還有帥氣的顏值上,這個問題最終被我解決,在這個不得不吐糟一下thinkphp官方啦,官方給我們提供的.htaccess demo中根本不能實現僞靜態,
官方demo:
<IfModule mod_rewrite.c>
Options +FollowSymlinks
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ index.php/$1 [QSA,PT,L]
</IfModule>
上面就是官方僞靜態demo,tp3.2.3在php5.6版本和版本以上的確會出現不能隱藏index.php
大多數夥伴只看文檔裏面提供的方法產生了誤導。官方文檔中.htaccess裏面RewriteRule ^(.*)$ index.php/$1 [QSA,PT,L]在php5.6以下有用。要是php5.6或者php5.6以上就得改爲RewriteRule ^(.*)$ index.php [L,E=PATH_INFO:$1]方能有效
此外:
一, 這裏我們是一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',這個可以根據項目需求選擇放在公共配置文件中還是單一模塊的項目中。