【发布时间】:2013-09-17 13:10:02
【问题描述】:
我想从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 查询。
由于其他 URL 类似于 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 中设置了基本 url,然后在 routes.php 中创建了 -only- 两个规则,如下所示:
$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 页面未找到
找不到您请求的页面。
我在这里做错了什么?
【问题讨论】:
-
route.php文件不重定向,它只是“替换”(就 CodeIgniter 而言)路由,而redirect()进行真正的重定向(更改 URL) -
出于某种原因,将“”更改为“家”是有意义的 :) 显然这是错误的。
标签: php .htaccess codeigniter redirect url-rewriting