【发布时间】:2014-02-26 00:40:51
【问题描述】:
我正在尝试在 CodeIgniter 框架上运行的网站上设置博客脚本。我想在不对现有网站代码进行任何重大代码更改的情况下执行此操作。我认为创建一个指向另一个控制器的子域将是最干净的方法。
我设置新的Blog 控制器所涉及的步骤:
- 创建指向我的服务器 IP 地址的 A 记录。
- 向 CodeIgniter 的
routes.php文件添加新规则。
这是我想出的:
switch ($_SERVER['HTTP_HOST']) {
case 'blog.notedu.mp':
$route['default_controller'] = "blog";
$route['latest'] = "blog/latest";
break;
default:
$route['default_controller'] = "main";
break;
}
这应该将blog.notedu.mp 和blog.notedu.mp/latest 指向我的blog 控制器。
现在问题来了……
访问blog.notedu.mp 或blog.notedu.mp/index.php/blog/latest 工作正常,但是访问blog.notedu.mp/latest 会因为某种原因将我带到404 页面...
我的 .htaccess 文件如下所示(从 url 中删除 index.php 的默认设置):
RewriteEngine on
RewriteCond $1 !^(index\.php|images|robots\.txt)
RewriteRule ^(.*)$ /index.php/$1 [L]
而我的Blog 控制器包含以下代码:
class Blog extends CI_Controller {
public function _remap($method){
echo "_remap function called.\n";
echo "The method called was: ".$method;
}
public function index()
{
$this->load->helper('url');
$this->load->helper('../../global/helpers/base');
$this->load->view('blog');
}
public function latest(){
echo "latest working";
}
}
我在这里错过了什么或做错了什么?这几天我一直在寻找解决这个问题的方法:(
【问题讨论】:
-
你有htaccess来删除
index.php吗? -
我愿意。这应该有所作为吗?
-
如果有帮助,请使用我的 htaccess 文件编辑 OP。
-
仍然无法让这个工作,所以开始赏金。你 CodeIgniter 大师应该能够在这里轻松获得 +50 ;)
标签: php .htaccess codeigniter routing custom-url