由于Codeigniter控制器,出现重复内容问题



我正在协助一个Codeigniter网站,但没有它的背景。已经注意到有重复的页面内容。当我深入研究时,它们不是实际的页面,而是指向相同视图的控制器。我试图在网站根目录下的.htaccess文件中设置301个重定向,但没有成功。在application/config/routes.php中,注意到以下内容:

$route['default_controller'] = 'Home';
$route['404_override'] = 'Home';

例如,有一个页面http://mywebsite.com/weddings,然后http://mywebsite.com/Home/weddings是指向相同视图的另一个控制器。我试图在删除指向主页/婚礼的额外控制器后添加301重定向,但现在主页/婚礼只是重定向到主页,因为它是用404覆盖设置的。我希望我已经提供了足够的信息来提供一些帮助。

.htaccess文件:

RewriteEngine On
RewriteBase /

# add trailing slash
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_URI} !(.*)/$
RewriteRule ^(.*)$ $1/ [R=301,L]
# allow access to certain directories in webroot
RewriteCond $1 
!^(index.php|robots.txt|css/|lib/|js/|images/|^(.*)/images)
# gets rid of index.php
RewriteRule ^(.*)$ index.php?/$1 [L] 
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
# page redirects
RedirectMatch 301 ^Home/weddings/$ /weddings

Home.php如下:

<?php
defined('BASEPATH') OR exit('No direct script access allowed');
class Home extends CI_Controller {
public function __construct() {
parent::__construct();
$this->load->model('Admin_model');
$this->load->model('Home_model');
$this->load->helper('captcha');
$this->load->library('recaptcha');
}
public function weddings()
{
$this->load->view('Template/Home/front_header');
$this->load->view('Home/weddings');
$this->load->view('Template/Home/front_footer');
}

不要触摸.htaccess。您有两个选项。

  • 创建一个控制器Weddings.php,并在您的index.php中返回查看婚礼页面
  • 另一种选择是使用Home.php控制器,然后添加婚礼方法,该方法应返回婚礼页面视图。您的路线应如下所示:

$route['default_controller'] = 'Home';
$route['404_override'] = 'Home';
$route['/weddings'] = 'home/weddings';

希望这会有所帮助。谢谢

编辑

Weddings.php控制器constructor中,检查是否存在"主页"并返回404错误。见下文

function __construct()
{
parent::Controller();

if($this->uri->uri_segment(1) == 'Home') {
show_404();
}
}

相关内容

  • 没有找到相关文章

最新更新