您可以通过将用户代理重定向到新 URL 来解决此问题。
方法 #1:使用 htaccess
在 之后使用以下内容RewriteBase /
作为第一个 RewriteRule:
RewriteCond %{THE_REQUEST} index\.php
RewriteRule ^index.php(?:/(.*))?$ $1 [R=301,L]
如果您还没有使用过,您可能需要更改$1
为.http://example.com/$1
RewriteBase
其他规则必须在上述规则之后。
方法 #2:用 PHP 处理
我建议扩展CI_Controller
如下:
class MY_Controller extends CI_Controller
{
public function __construct()
{
// Execute CI_Controller Constructor
parent::__construct();
// Get the index page filename from config.php
// For perior to PHP 5.3 use the old syntax.
$index = index_page() ?: 'index.php';
// Whether the 'index.php' exists in the URI
if (FALSE !== strpos($this->input->server('REQUEST_URI', TRUE), $index))
{
// Redirect to the new address
// Use 301 for permanent redirection (useful for search engines)
redirect($this->uri->uri_string(), 'location'/*, 301*/);
}
}
}
但是,搜索引擎不会索引看起来像 的 URL index.php/privacy_policy
,除非您在页面中使用了此类 URL 地址。
此外,您可以在页面中使用规范链接元素,以使搜索引擎仅为其搜索结果索引页面的一个版本:
<link rel="canonical" href="http://domain.com/privacy_policy">
特别是在 CodeIgniter 中:
<link rel="canonical" href="<?php echo base_url(uri_string()); ?>">