Apache CakePHP分页中页1的特殊路由

Apache CakePHP分页中页1的特殊路由,apache,.htaccess,cakephp,mod-rewrite,cakephp-1.2,Apache,.htaccess,Cakephp,Mod Rewrite,Cakephp 1.2,我修改了CakePHP的paginator助手,以打印出没有页面的第一个页面链接,例如: myexample.com/controller/action/id/page:1将是 myexample.com/controller/action/id/和任何其他页面页面:1将被删除 像往常一样 在这一点上,一切都很顺利。然而,我注意到myexample.com/controller/action/id/page:1仍然可以访问。我希望它不需要第1页就可以访问。下面是我在config/routes.p

我修改了CakePHP的paginator助手,以打印出没有页面的第一个页面链接,例如:

myexample.com/controller/action/id/page:1将是 myexample.com/controller/action/id/和任何其他页面页面:1将被删除 像往常一样

在这一点上,一切都很顺利。然而,我注意到myexample.com/controller/action/id/page:1仍然可以访问。我希望它不需要第1页就可以访问。下面是我在config/routes.php中使用的路由规则

Router::connect('/action/:id/:page', array('controller' => 'controller', 'action' => 'action'), array('id' =>'[0-9]+', 'page' => 1, 'pass' => array('id')));
我需要知道如何消除页面:1以使其可访问或自动重定向到操作/id,因为这种情况会导致SEO问题

注意:我使用的是CakePHP 1.2.10


任何包含.htaccess的解决方案都是受欢迎的。

如果我们不希望页面:1在1.x/2.x中错误路由,我们通常会使用另一个路由来解决此问题:

Router::connect('/kuechen/alle', array('controller'=>'kitchens', 'action'=>'index_all'));
Router::connect('/kuechen/alle', array('controller'=>'kitchens', 'action'=>'index_all', 'page'=>1));
Router::connect('/kuechen/alle/*', array('controller'=>'kitchens', 'action'=>'index_all'));
注意第二个


然后使用规范标记使/index/without页面:1成为规范url。完成。

我终于找到了答案。我必须在app/webroot中找到的.htaccess的第一行中编写以下代码

RewriteRule ^(.*)page:1(.*)$ /$1 [R=301,L]
最终的.htaccess将是:

<IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteRule ^(.*)page:1(.*)$ /$1 [R=301,L]
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^(.*)$ index.php?url=$1 [QSA,L]
</IfModule>

如果您使用canonical并将主url用作此处的url,则这不是SEO问题。谷歌将只为我的应用程序中的规范url
controller/action/id/
@标记编制索引。我从不将url用于第1页。换句话说,我的应用程序上设置的每个分页链接都没有第1页。在谷歌网站管理员工具中,我发现一些关于重复标题的报告,如action/125/page:1和action/125/。真的,我不知道谷歌是如何得到page:1的!如果你转到第二页等,可能会显示第1页作为链接。添加另一条规则以防止出现这种情况。它是相同的。我不想使用kuechen/alle/page:1访问,换句话说,如果有kuechen/alle/page:1,它应该被重定向到kuechen/alle/这正是第二条路径所做的。
RewriteRule ^(.*)page:1(.*)$ /myapp/$1 [R=301,L]