我们刚从一个网络服务器转移到另一个网络服务器 我有一个简单的静态网站,并使用此方法重写网址:
default.thtml中
<?=$this->Html->link(__('Imprint'), array('controller' => 'pages', 'action' => 'imprint'));?>
routes.php文件
Router::connect('/', array('controller' => 'pages', 'action' => 'display', 'home'));
Router::connect('/pages/*', array('controller' => 'pages', 'action' => 'display'));
Router::connect('/imprint', array('controller' => 'pages', 'action' => 'display', 'imprint'));
在旧的网络服务器上,该链接显示为:domain.com/imprint
在新服务器上显示为domain.com/pages/imprint
该页面正常运行,根本没有断开的链接。 我已经设置了&#34; RewriteBase /&#34;在htaccess文件中。
如何让网址重写恢复正常? 我目前不知道错误是什么,因为我移动了另一个蛋糕项目,也是一个静态项目,并且链接从一开始就很好用。我不知道,为什么这个项目不同,我比较了htaccess文件,核心,路线......我真的不能看到这个问题......
答案 0 :(得分:3)
我不知道这可能与服务器有什么关系,以及您的URL数组如何匹配这些路径。
<强> http://book.cakephp.org/2.0/en/development/routing.html#routes-configuration 强>
路由从&#34; 从上到下&#34;进行处理,因此您必须确保特定路由在通用路由之前是 。
在您的情况下,/pages/*
路线优先,它会像您的/imprint
一样吞下每一个后续路线。
因此,请更改订单,将/imprint
放在/pages/*
之前:
Router::connect('/imprint', array('controller' => 'pages', 'action' => 'display', 'imprint'));
Router::connect('/pages/*', array('controller' => 'pages', 'action' => 'display'));
您用于生成链接的网址数组看起来不像任何路线。它既未指定display
操作,也未指定页面名称参数。
生成链接时,请使用@kicaj
所示的正确URL数组array('controller' => 'pages', 'action' => 'display', 'imprint')
答案 1 :(得分:0)
使用:
$this->Html->link(__('Imprint'), array('controller' => 'pages', 'action' => 'display', 'imprint'));