使用 thinkphp 開發的應用的 url 中通常都會帶個 index.php ,如果我們需要偽靜態或者做 SEO 優化的時候,這個是非常不好看也沒有意義的。那麼我們該如何去除 thinkphp 應用 url 中的 index.php 呢?
對於這個問題我們可以通過URL重寫的方式解決,當然這個是需要服務器開啟 URL_REWRITE 模塊才可以的。所以進行下面的步驟前請確定你的服務器是否已經開啟了或者是否能開啟 URL_REWRITE 。
(1)如果沒有開啟 URL_REWRITE,則你需要找到 Apache 中的 httpd.conf 這個配置文件,找到下面這行:
#LoadModule rewrite_module modules/mod_rewrite.so
把前面的警號去掉,然後繼續找到下面這句:
AllowOverride None
將所有找到的以上語句都改為:AllowOverride All
以上修改完畢然後重啟 Apache 服務器即可。
(2)在應用的根目錄下面新建一個 .htaccess 文件。在文件裡面加入如下代碼:
<IfModule mod_rewrite.c> RewriteEngine on RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^(.*)$ index.php/$1 [QSA,PT,L] </IfModule>
其實以上就已經實現了去除 url 中的 index.php 字符直接訪問應用了。但是僅僅以上兩步操作還會出現的一個問題就是 thinkphp 的常量 __URL__ 中還是會自動帶上 index.php 這段字符串,徹底解決這個問題的辦法是在項目的配置文件裡加上如一條如下配置:
'URL_MODEL'=>'2'
至此 thinkphp 應用 url 中的 index.php 就徹底無影無蹤了。
注意:在 windows 下不能直接建立 .htaccess 這種文件,你可以先隨便建立一個文件(如:www.phpernote.com.txt),然後在DOS裡面輸入如下命令:
rename www.phpernote.com.txt .htaccess