我想从mysite.com/en/home
重定向我的网页,而URI是mysite.com
。
我用routes.php尝试过很多东西,但没有一个有效:
$route['(:any)/'] = 'pages/view/$1/home';
$route[''] = 'home';
$route[''] = 'en';
这只能通过.htaccess获得吗?如果是这样,我怎么能这样做只会影响mysite.com或mysite.com/en查询。
由于其他网址类似于mysite.com/en/about,我不想把它们弄成mysite.com/en/home/about
我有以下规则将mysite.com/x/y
转换为mysite.com/index.php/x/y
:
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule .* index.php/$0 [PT,L]
可能是这条规则与其他规则冲突的情况吗?
感谢您的帮助。
好的,为了尝试Diego Camacho的回答,我创建了一个空的CI项目,在config.php
中设置了基本网址,然后在routes.php中制定了以下两个规则:
$route['(:any)'] = 'Site';
$route['default_controller'] = "pages/view";
并将此功能添加到pages.php(控制器):
public function view($arg)
{
if(!$arg)
{
echo "no argument";
}
else
{
echo "argument = $arg";
}
}
所以现在,我希望它能像这样工作:
http://localhost/ci/index.php/
- >没有争论
http://localhost/ci/index.php/abc
- > arg = abc
但相反,它会返回以下内容:
http://localhost/ci/index.php/
- >
遇到PHP错误
严重性:警告
消息:缺少Pages :: view()
的参数1文件名:controllers / pages.php
行号:26
遇到PHP错误
严重性:注意
消息:未定义的变量:arg
文件名:controllers / pages.php
行号:28
没有争论
http://localhost/ci/index.php/abc
未找到404页面
找不到您请求的页面。
我在这里做错了什么?
答案 0 :(得分:2)
您需要将页面路由到主控制器,以便主控制器可以加载您的主页。示例
$route['(:any)'] = 'Site';
控制器:
class Site extends CI_Controller {
function __construct() {
parent::__construct();
}
public function index() {
$this->home();
}
public function home() {
$this->load->view('content/home');
}
答案 1 :(得分:0)
哦,我想我解决了这个问题。我需要像这样制作routes.php文件:
$route['(:any)'] = 'pages/view/$1';
$route['default_controller'] = "pages/view";