최근 SEO를 용이하게 하기 위해 2차 도메인 이름을 사용해야 하는 프로젝트를 접했습니다. CodeIgniter 프레임워크가 사용되기 때문에 이 프레임워크는 유연한 라우팅 기능을 제공하지만 2차 도메인 이름을 구현할 수 없습니다. 많은 정보를 검색한 후 여러 테스트를 거쳐 해결책을 찾았습니다. 이 예에서는 가짜 도메인 이름 www.mysite.com을 사용합니다.
1단계:
먼저 httpd.conf에서 가상호스트를 생성하세요
<VirtualHost *:80> ServerAdmin admin@163.com DocumentRoot "D:/www/cms" ServerName www.mysite.com ServerAlias *.mysite.com #这里采用泛解析的方式 ErrorLog "logs/mysite.com-error.log" CustomLog "logs/mysite.com.log" common </VirtualHost>
2단계:
이 효과를 얻고 싶습니다:
http://www.mysite.com/category/news/1.html =====> http://category.mysite.com/news/1.html
이 도메인에 대한 정상적인 액세스를 보장하려면 호스트 파일을 수정
127.0.0.1 www.mysite.com 127.0.0.1 category.mysite.com
3단계:
수정: system/core/URI.php의 _set_uri_string 메소드
/** * Set the URI String * * @access public * @param string * @return string */ function _set_uri_string($str) { // Filter out control characters $str = remove_invisible_characters($str, FALSE); // If the URI contains only a slash we'll kill it $this->uri_string = ($str == '/') ? '' : $str; // Add by fengyun for url rewrite at 2013-1-25 1:02:27 @include(APPPATH.'config/domain'.EXT); $arrServerName = explode('.', $_SERVER['SERVER_NAME']); if (in_array($arrServerName[0], $domain)) { $this->uri_string = '/' . $arrServerName[0]."/" . $this->uri_string; } }
이는 주로 CI가 URL을 올바르게 이해할 수 있도록 하기 위한 것입니다.
4단계: application/config/ 아래에 domain.php 파일을 만듭니다. 내용은 다음과 같습니다.
<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed'); $domain = array('category',"detail","info","archive");
기본적으로는 완료되었습니다. 하지만 site_url()을 사용할 때 2차 도메인 이름을 사용하려면 다른 작업을 수행해야 합니다.