Discuz!是一個非常流行的社區(qū)論壇程序,但其默認(rèn)會生成portal.php頁面,用于顯示門戶頁面。然而,在某些情況下,我們可能需要去掉portal.php,以提高網(wǎng)站的安全性、性能和用戶體驗(yàn)。本文將詳細(xì)介紹如何去掉portal.php。
首先,我們需要修改站點(diǎn)的URL設(shè)置。具體來說,我們需要將Rewrite mode設(shè)置為Apache的Rewrite規(guī)則,再開啟偽靜態(tài)功能。如果您的站點(diǎn)已經(jīng)開啟了Rewrite和偽靜態(tài)功能,那么可以直接跳過這一步。否則,我們需要在.htaccess文件中加入以下代碼:
RewriteEngine On RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(.*)$ portal.php?mod=$1 [L,QSA]這些代碼的作用是將門戶頁面的請求重定向到portal.php,并在URL中添加mod參數(shù)。例如,如果您的門戶頁面為index,那么URL將變?yōu)椋篽ttp://yourdomain.com/index 然后,我們需要修改Discuz!的代碼,以使其不再生成portal.php頁面。具體來說,我們需要在以下文件中修改相關(guān)代碼:
- source/module/portal/portal.php
- source/module/portal/index.php
- source/include/misc/misc_portal.php
if(!$_G['setting']['portalstatus'] || !$_G['group']['allowportal'] || strpos($_SERVER['PHP_SELF'], 'portal.php') !== false) { showmessage('undefined_action', NULL); }然后,將其替換為以下代碼:
if(!$_G['setting']['portalstatus'] || !$_G['group']['allowportal']) { showmessage('undefined_action', NULL); }這個修改的作用是,當(dāng)Discuz!檢測到portal.php頁面時,會直接跳轉(zhuǎn)到undefined_action頁面,而不再生成門戶頁面。 最后,我們需要修改Discuz!的一些配置項(xiàng),以確保門戶頁面的相關(guān)功能正常工作。具體來說,我們需要在以下文件中修改相關(guān)代碼:
- source/include/portal.func.php
- source/include/template.func.php
'portal' =>array( 'index' =>array('name' =>lang('core', 'title_portal'), 'open' =>!empty($_G['setting']['portalstatus']), 'default' =>'title', 'nav' =>'', 'template' =>array( 'portal/portal', 'portal/portal_index', ), ),然后,將其替換為以下代碼:
'portal' =>array( 'index' =>array('name' =>lang('core', 'title_portal'), 'open' =>false, 'default' =>'title', 'nav' =>'', 'template' =>array( 'portal/portal', 'portal/portal_index', ), ),這個修改的作用是,將門戶頁面的功能關(guān)閉,以避免出現(xiàn)一些不必要的問題。 綜上所述,去掉portal.php并不是一件難事,只需要修改一些配置文件和代碼即可。但需要注意的是,這樣做可能會對Discuz!的一些功能造成影響,需要根據(jù)實(shí)際情況進(jìn)行調(diào)整和測試。