我是CakePHP的新手。我有一个由其他人在CakePHP 3.3.16中建立的网站。有指向website.com/page和website.com/page /的链接。
使/ page /重定向到/ page而不影响可能以// page /开头的其他内容的最佳方法是什么?
route.php有这个...
$routes->connect('/page/*', ['controller' => 'Page', 'action' => 'something']);
然后我有一个[[PageController.php其中具有
public function something($site_id = null)
{
...
}
将在中工作吗?如何指定这是301重定向?routes.php
use Cake\Routing\RouteBuilder;
Router::scope('/', function (RouteBuilder $routes) {
$routes->redirect('/page/','http://website.com/page');
$routes->connect('/page/?*', ['controller' => 'Page', 'action' => 'something']);
});
这似乎在中不起作用(显示/ page /且未重定向)...。htaccess
Redirect 301 /page/ http://website.com/page
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [L]
</IfModule>
Route::scope
设置为Router::connect
和Router::redirect
imo。因此,一种解决方案的方法是首先要做类似的事情。 Router::connect('/page/*', ['controller' => 'Page', 'action' => 'something']);
然后您通过cake命令重定向来重定向页面:
Router::redirect('/page/','/page', array('status' => 301));
在我使用的CakePhp 2.6项目中,根据任务的不同,我总是重定向这样的页面。有时,您可以在Controller内部执行这种重定向,但是最好避免这种重定向,因为它不会将路由与编程逻辑混合在一起。