Если я правильно понимаю ваш вопрос, вы хотите, чтобы запросы на /community/*
были направлены на ResourcesController
. Вы должны быть в состоянии достичь этого, добавив следующее к вашему app/config/routes.php
.
/**
* Rename /resources/* to /community/*
*/
Router::connect('/community', array('controller' => 'resources'));
Router::connect('/community/:action/*', array('controller' => 'resources'));
Второе правило выполняет большую часть магии, сопоставляя соответствующие запросы с ResourcesController
и передавая также действие.
При вышеуказанном подходе вы также можете воспользоваться преимуществами обратной маршрутизации:
echo $this->Html->link('View community', array(
'controller' => 'resources',
'action' => 'view',
$id
));
// outputs a link to `/community/view/171`
Первое правило просто заключается в том, чтобы исключить имя действия из корневого URL-адреса (т. Е. Ссылки HtmlHelper
с обратной маршрутизацией становятся /community
вместо /community/index
).
После комментария LazyOne, если вы также хотите перенаправить старые ссылки в стиле /resources*
для целей SEO, вам нужно выполнить следующее:
# app/webroot/.htaccess
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule ^/resources(.*)$ /community$1 [R=301,L] # permanent redirect
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ index.php?url=$1 [QSA,L]
</IfModule>