Apache 去掉 index.php
在使用 PHP 開發(fā)網(wǎng)站的過程中,我們經(jīng)常需要訪問某個控制器或方法,一般情況下這個鏈接都是帶有 index.php 的。比如我們訪問 User 模塊的 index 方法,一般是這樣的鏈接:“http://example.com/index.php?c=user&a=index”。但是這樣的鏈接很難看,也不夠美觀。那么如何去掉 index.php 呢?下面我們就來一步一步講解。
第一步:開啟 mod_rewrite 模塊
在 Apache 服務(wù)器上,我們需要開啟 mod_rewrite 模塊才能使用 URL 重寫功能。如果 mod_rewrite 模塊沒開啟,我們可以在 httpd.conf 文件中開啟它。找到 LoadModule rewrite_module modules/mod_rewrite.so 這一行,將其前面的 # 號去掉,表示開啟該模塊。
第二步:修改 .htaccess 文件
.htaccess 文件是一個隱藏文件,用于修改 Apache 服務(wù)器的配置,可以讓我們在不直接修改 Apache 服務(wù)器的配置文件的情況下,改變它的一些配置。我們在項(xiàng)目的根目錄下創(chuàng)建一個 .htaccess 文件,然后在里面輸入以下代碼:
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ index.php/$1 [QSA,PT,L]
這段代碼的意思是,開啟 RewriteEngine,然后加入兩個條件,如果請求的不是一個存在的目錄或文件,那么就將請求傳遞給 index.php 文件,并在鏈接中去掉 index.php。
第三步:修改項(xiàng)目配置
在上面的 .htaccess 文件中,我們讓鏈接中去掉了 index.php,但是還需要修改項(xiàng)目中的配置才能讓程序正確識別。比如在 CodeIgniter 項(xiàng)目中,我們需要在 config.php 文件中修改 $config['index_page'] 配置項(xiàng),將它的值改為 '',表示去掉 index.php。還需要修改 routes.php 文件,將默認(rèn)控制器的定義修改為 $route['default_controller'] = 'user',表示默認(rèn)的控制器為 user。
如果你是使用其他 PHP 框架或者 CMS,那么具體修改方式可能會略有不同,但基本思路都是相通的。
注意事項(xiàng)
在使用 URL 重寫功能的時候需要注意以下幾點(diǎn):
1. 檢查是否開啟了 mod_rewrite 模塊
2. .htaccess 文件必須在 Apache 的監(jiān)聽目錄下,否則不生效
3. 如需修改項(xiàng)目配置,要謹(jǐn)慎操作,確保修改正確
總結(jié)
通過上面的步驟,我們就能使用 Apache 去掉 index.php,讓鏈接更加美觀,也更符合 SEO 規(guī)范。這種方式不單單適用 PHP 項(xiàng)目,其他語言的 Web 項(xiàng)目同樣可以使用類似的方法去掉 index.php。