通过modrewrite条带化部分网址

时间:2013-11-26 14:02:44

标签: apache mod-rewrite silverstripe

我从我的cms

获得了以下网址构造
domain.de/cmsfolder/page1/page2/function/my-news-headline

domain.de/cmsfolder/page1/function/my-reference-headline

我想将函数分色出来,以便我的网址

domain.de/cmsfolder/page1/page2/my-news-headline

domain.de/cmsfolder/page1/my-reference-headline

并没有导致404错误。

有人可以告诉我这是否可行以及如何?

或者也许可以从我页面的任何网址中删除“功能”?

致以最诚挚的问候,并提前感谢

1 个答案:

答案 0 :(得分:1)

不是一个优雅的解决方案,但如果你的页面控制器中只有1个动作('myfunction'),这将有效:

将其添加到Page_Controller

private $actionName;

private static $allowed_actions = array (
    'myfunction'
);

static $url_handlers = array(
    '' => 'myfunction'
);

public function init(){
    parent::init();

    $urlParams = $this->getURLParams();
    if(isset($urlParams['Action'])) { //might not be set when coming from '/' or '/home'
        $this->actionName = $urlParams['Action'];
    }
}

public function myfunction() {
    //do something here with $this->actionName
}

现在,当您导航到domain.de/cmsfolder/page1/page2/my-news-headline时,$actionName将设置为“my-news-headline”,并且会调用myfunction来使用它。