我正在尝试为我的CodeIgniter网站创建自定义路由。即使是最基本的路线也行不通。例如,我将欢迎控制器映射到“test”,它就是404。我在运行mod_rewrite的MAMP上运行。
我在config.php中有index.php行为空..
$config['index_page'] = '';
这是我的.htacess文件..
DirectoryIndex index.php
RewriteEngine on
RewriteCond $1 !^(index\.php|images|css|js|robots\.txt|favicon\.ico)
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ ./index.php/$1 [L,QSA]
这是我的路线..
$route['welcome'] = 'test';
答案 0 :(得分:0)
如果我读得正确,那条路线会尝试将控制器'welcome'重定向到控制器'test'。如果您有一个名为'test'的控制器和一个名为'index'的函数,您可以路由以下内容:
route['welcome/index'] = 'test/index';
这是你想要做的吗?
答案 1 :(得分:0)
一些事情:
CI中的路由是级联的,它们是从上到下进行评估的,路由器在第一次匹配时停止。然后,确保将任何自定义路由放在下面的vanilla发行版中的2条默认路由中:
$route['default_controller'] = "welcome";
$route['404_override'] = '';
// custom routes here
$route['welcome'] = "welcome/test";
如果您有一个名为“welcome”的控制器(默认值),并且您想要调用名为“test”的方法,则需要一个类似
的路径$route['welcome'] = "welcome/test"
可在网址http://wwww.yourdomain.com/welcome访问 (如果没有指定路由,您可以像http://www.yourdomain.com/welcome/test)
通常,控制器有一个索引方法,当没有提供其他方法时会自动调用该方法。您到目前为止创建的路由无法正常工作,因为它正在调用“测试”控制器的index()
方法,这可能不存在。
建议:如果您将“欢迎”控制器作为默认控制器,并且您想要调用类似http://www.yourdomain.com/test的网址
您需要test()
方法,并且您的路线必须
$route['test'] = "welcome/test";
答案 2 :(得分:0)
在路线中,数组键包含要匹配的 URI ,而 数组值包含应重新路由到的目标。
您的物理控制器名称为welcome
。因此,如果您希望第一个细分中包含单词test
的网址重新映射到welcome
类,则应执行以下操作:
$route['test'] = "welcome/METHOD";
其中METHOD
是welcome
类的方法。
注意:如果类/方法为welcome/index
,则无需附加/index
。