0

我有一个 SEO 要求,当用户登录时,他们的用户名应该显示在控制器名称之前。

IE

  • example.com/home - 目前看起来像这样
  • example.com/username/home - 我希望它看起来像这样

我在 routes.php 中尝试了一些基本修改,例如:

Router::connect('/haresh/:controller', array('action' => 'index'));

有了这个,它就可以了,但是这个选项丢失了基本路径,所以所有图像都消失了。即像这样的图像网址:

<img src='img/xyz.png' />

不要工作。

如何修改 url 使其/username/作为所有 url 的前缀,并修复图像路径问题?

4

2 回答 2

3

SEO适用于匿名用户

如果问题中的网址仅适用于已登录的用户 - 它们的 SEO 价值为零 - 因为 googlebot et.al. 永远不会登录您的网站,如果他们这样做了 - 所有网址都是/googlebots-username/....

搜索引擎优化路线

假设这些用户 url 是可公开访问的(请参阅前一点,如果不是,则它们没有任何价值),您需要做的就是为它们定义一个路由:

// 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'];

修复图像

这是一个单独的问题,但简单的解决方法是使用适当的辅助方法

<?php echo $this->Html->image('xyz.png', array('alt' => 'to the abc')); ?>

大多数标记问题的答案是使用适当的辅助方法。

或者

或者只使用绝对网址:

<img src='/img/xyz.png' />

显然,如果 url 正在更改 - 使用资产的相对路径意味着请求的图像会根据当前 url 更改。

于 2013-01-26T08:33:12.770 回答
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' />
于 2013-01-26T22:18:14.783 回答