我有一个 PHP5/Zend Framework 1.8.1 网站,位于:
http://www.example.com/foo
该网站的旧版本,令人愤怒的是,仍然由谷歌的索引维护,位于:
http://www.example.com/foo/DEFAULT.ASP
所以很多人都在请求上面的链接并且遇到了死胡同。
我想,解决这个问题的方法是发出 301 重定向以将他带到新站点。想到的两种方法是:
我想到的第一种方法是在我们的 .htaccess 中添加一个重写规则。我们的站点实现是 PHP5 / Zend Framework 1.8.1,因此 .htaccess 中有一个现有的重写规则(根据 Zend Framework MVC 要求),即:
RewriteRule !\.(js|ico|gif|jpg|png|css|jpeg)$ index.php
作为一个 mod_rewrite 菜鸟,我做了一些谷歌搜索,并提出了以下处理重定向的方法:
RewriteCond %{HTTP_HOST} ^/foo/DEFAULT.ASP RewriteRule (.*) http://example.com/foo$1 [R=301,L]
我将这些行添加到 .htaccess 中,但它们不起作用。
我想到的第二种方法是使用
Zend_Router_Route_Static
如下:$router = $frontController->getRouter(); $route = new Zend_Controller_Router_Route_Static('foo/DEFAULT.ASP', array('controller' => 'foo', 'action' => 'index')); $router->addRoute('foo', $route);
这会重定向到正确的页面,但我也不知道如何设置 301 标头,而且在我的代码中包含这些代码行非常不雅
bootstrap.php
任何人都可以就如何处理这种情况提供任何建议吗?我想知道所有或任何一个:
- 如何让重写规则起作用
Zend_Controller_Router_Route
如果可能的话,如何做一个'301' 。- 还有另一种我想念的方式吗?
- 哪种方法更好,为什么?
- 为什么谷歌不解决这个问题?已经快半年了。