我的问题很简单,如何使用 symfony 1.4 实现 SEO 优化任务?
第一个问题,不仅仅是一个 SEO 问题,而是一个 symfony 1.4 的问题,一般来说,symfony 对 URL 做了一件奇怪的事情,比如:
模块/动作
和
模块/动作/
第一个有效,第二个被拒绝或抛出错误,或者最常见的有效,但不重定向(使用 301)到第一个,这应该是一个约定,因为 SEO 明智的这些 url 不是完全相同的。这不应该。
我的问题很简单,如何使用 symfony 1.4 实现 SEO 优化任务?
第一个问题,不仅仅是一个 SEO 问题,而是一个 symfony 1.4 的问题,一般来说,symfony 对 URL 做了一件奇怪的事情,比如:
模块/动作
和
模块/动作/
第一个有效,第二个被拒绝或抛出错误,或者最常见的有效,但不重定向(使用 301)到第一个,这应该是一个约定,因为 SEO 明智的这些 url 不是完全相同的。这不应该。
这是 symfony 中的一个常见错误,这个尾部的斜杠会引起麻烦。有些人会告诉你这是正常的,因为第一个是文件,第二个是目录。由于你不能用 symfony 浏览目录,它会抛出一个错误。
但是您有两个选择作为解决方法,使用 htaccess 或使用自定义路由。
htaccess:(从这里)
RewriteRule ^(.+)/$ http://%{HTTP_HOST}/$1 [R=301,L]
自定义路由:(从这里)
/apps/frontend/config/factories.yml
all:
routing:
# class: sfPatternRouting
class: myPatternRouting
创建类:
apps/frontend/lib/myPatternRouting.class.php
<?php
class myPatternRouting extends sfPatternRouting
{
protected function normalizeUrl($url)
{
$url = parent::normalizeUrl($url);
// remove trailing slash
$url = preg_replace('/\/$/', '', $url);
return $url;
}
}