關(guān)于偽靜態(tài)的問題,我有一個問題詢問各位大佬。
是這樣的我做的網(wǎng)站主目錄是按照年代走的,比如2012、2013之類的,每個分目錄下都有一個A、B的子目錄,但是因為目錄名字不能重復(fù)所以是A2012、A2013這樣形式的。
URL規(guī)則組合起來就是【2012\A2012、2013\A2013】這樣形式的不好看,就用自定義函數(shù)給去掉后面的2012和2013變?yōu)椤?012\A、2013\A】。
但是在偽靜態(tài)解析就出現(xiàn)問題了,比如我用正則表達(dá)式:
([\w]+)\/(A)
來取得出來的是:
$1=2012,$2=A
到這里取出都是沒問題的,但是因為想指向到2012A這個目錄,肯定是希望$2+$1得出A2012這樣子的,就在后面寫的是:
index.php?c=category&dir=$2$1
結(jié)果發(fā)現(xiàn)這里不會相加,這里會到
index.php?c=category&dir=A
這個地址,因為沒有A這個欄目就提示欄目(A)不存在。。。
其實簡單的就是想問如何將解析規(guī)則中的變量$1和$2之類的相加。。。
先感謝諸位大佬。
目錄名字是什么樣子的
回復(fù)@Compas 目錄名字是游戲名字,游戲是年代游戲,fifa19,比如我想 fifa19/news/index.html、fifa20/news/index.html 這樣的,因為子目錄news又不能重復(fù)。。。只能變成 fifa19/19news 之類的,這不就不美觀了么,就有如上的問題了。
fifa19是目錄的話
對應(yīng)的規(guī)則就是:
回復(fù)@天天向上
感謝大佬回答,但是這樣可以取出 fifa19 的目錄進(jìn)行訪問,但是無法通過 fifa19/news 訪問到 fifa19下的子目錄 19news當(dāng)中去。
我原先的想法是這樣的:
通過這樣 取出 $1=19 然后 $2=news,然后再在dir這里相加出來,結(jié)果不行只會出現(xiàn)$1的19導(dǎo)致不顯示目錄,哪怕我不取兩個變量相加:
結(jié)果也是一樣的只會指向 index.php?c=category&dir=19 導(dǎo)致如下結(jié)果:
fifa19/19news是目錄的話
fifa19/news/index.html 對應(yīng)的規(guī)則就是:
回復(fù)@二開/定制/使用解答專家
感謝大佬回答,但是是不行的,你看我的設(shè)置。。。
父目錄是 fifa19 子目錄是 19news,然后URL規(guī)則那里也沒問題通過自定義函數(shù)把子目錄的 19news改為了 news,但是這樣解析規(guī)則 $1 取出的就是 news 而不是 19news。。。
原理很簡單,應(yīng)用看個人能力,正則表達(dá)式拆分匹配方式
開源是一種精神,但不是義務(wù),幫忙是情分,不幫也不要抱怨,建議大家多研究代碼、多閱讀代碼、多翻閱社區(qū)歷史問題!
fifa19/news/index.html 紅色的才是真正的欄目目錄嗎?那只能曲線救國了
新建文件:
/dayrui/Core/Controllers/Mycategory.php
<?php namespace Phpcmf\Controllers; // 曲線救國線路 class Mycategory extends \Phpcmf\Home\Module { public function index() { $page = max(1, (int)\Phpcmf\Service::L('input')->get('page')); $module = \Phpcmf\Service::L('cache')->get('module-'.SITE_ID.'-share'); if (!$module) { $this->_msg(0, dr_lang('共享欄目緩存不存在')); return; } $dir = ''; $dir1 = dr_safe_replace(\Phpcmf\Service::L('input')->get('dir1')); $dir2 = dr_safe_replace(\Phpcmf\Service::L('input')->get('dir2')); if (preg_match('/([0-9]+)$/U', $dir1, $one)) { // 找到數(shù)字,組合目錄 $dir = $one[1].$dir2; } else { $this->_msg(0, dr_lang('參數(shù)1沒有數(shù)字')); } $id = intval($module['category_dir'][$dir]); $cat = $module['category'][$id]; if (!$cat) { // 返回?zé)o法找到欄目 exit($this->goto_404_page(dr_lang('欄目(%s)不存在', $dir))); } // 初始化模塊 if ($cat['tid'] == 1) { if ($cat['mid']) { $this->_module_init($cat['mid']); } else { exit($this->goto_404_page(dr_lang('欄目所屬模塊不存在'))); } } else { $this->_module_init('share'); } // 調(diào)用欄目方法 $this->_Category($id, $dir, $page); } }