我有一个SEO要求,当用户登录时,他们的用户名应该显示在控制者名称之前。
即
我在routes.php中尝试了一些基本的修改,例如:
Router::connect('/haresh/:controller', array('action' => 'index'));
有了它,它可以工作,但是这个选项丢失了基本路径所以所有图像都是 消失。即像这样的图片网址:
<img src='img/xyz.png' />
不要工作。
如何修改网址,以便/username/
为所有网址添加前缀,并修复图像路径问题?
答案 0 :(得分:3)
如果问题中的网址仅适用于已登录的用户 - 它们的搜索引擎优化价值为零 - 因为googlebot et.al.永远不会登录到您的网站,如果他们这样做 - 所有网址都是/googlebots-username/...
。
假设这些用户网址是公开可访问的(请参阅上一点,如果它们不是没有价值的话),您需要做的就是为它们定义路线:
// define other routes first
Router::connect('/about', array('controller' => 'pages', 'action' => 'display', 'about'));
Router::connect('/:username/:controller', array('controller' => 'default', 'action' => 'index'));
Router::connect('/:username/:controller/:action', array('controller' => 'default', 'action' => 'index'));
Router::connect('/:username/:controller/:action/*', array('controller' => 'default', 'action' => 'index'));
然后,您可以访问控制器中的用户名属性
$username = $this->request->params['named']['username'];
这是一个单独的问题,但简单的解决方法是使用appropriate helper method:
<?php echo $this->Html->image('xyz.png', array('alt' => 'to the abc')); ?>
大多数标记问题的答案是使用适当的帮助方法。
或者只使用绝对网址:
<img src='/img/xyz.png' />
显然,如果网址正在变化 - 使用资产的相对路径意味着请求的图片会根据当前网址发生变化。
答案 1 :(得分:0)
如果只是图像路径问题,您可以使用任一解决方案
1使用cakephp的html helper类
<?php echo $this->Html->image('xyz.png', array('alt' => 'alternate text')); ?>
2使用webroot路径
<img src='<?php echo $this->webroot ?>img/xyz.png' />