mod_rewrite изменить исходный URI - PullRequest
0 голосов
/ 18 ноября 2011

Использование mod_rewrite (и CakePHP):

RewriteRule ^javascript/(.*)  /combine?type=javascript&files=$1 [PT,L]

Я хочу изменить

http://bla.com/javascript/flyout.ribbon.js,jquery.min.js

до

http://bla.com/combine?type=javascript&files=flyout.ribbon.js,jquery.min.js

Проблема в том, что CakePHP просматривает исходный URL (внутри parseParams () ниже) http://bla.com/javascript/ и решает, что я хочу получить доступ к JavascriptController / javascript вместо CombineController / объединить внутри Dispatcher.php

public function dispatch(CakeRequest $request, CakeResponse $response, $additionalParams = array()) {
    if ($this->asset($request->url, $response) || $this->cached($request->here)) {
        return;
    }

    Router::setRequestInfo($request);
    $request = $this->parseParams($request, $additionalParams);
 .....
}

public function parseParams(CakeRequest $request, $additionalParams = array()) {
    if (count(Router::$routes) == 0) {
        $namedExpressions = Router::getNamedExpressions();
        extract($namedExpressions);
        $this->_loadRoutes();
    }

    $params = Router::parse($request->url);
    $request->addParams($params);
.....
}

Можно ли каким-либо образом изменить исходный URL-адрес с помощью mod_rewrite? (или я просто неправильно понимаю вещи)

1 Ответ

0 голосов
/ 20 ноября 2011

Изменен route.php, добавив следующее:

Router::connect('/javascript/:filenames/*', 
                array('controller' => 'combine', 'action' => 'combineJs'), 
                array('pass' => array('filenames')));
...