使用htaccess和codeigniter路由请求

Bil*_*ill 0 php apache .htaccess codeigniter

我有一个带一个控制器的codeigniter应用程序(main.php)

目前,我已将hta​​ccess文件设置为删除index.php和main.php

因此,它只是www.domain.com/function_name而不是www.domain.com/index.php/main/function_name

我的htaccess文件如下所示:

 <IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /


RewriteCond %{REQUEST_URI} ^system.*
RewriteRule ^(.*)$ /index.php?/$1 [L]


RewriteCond %{REQUEST_URI} ^application.*
RewriteRule ^(.*)$ /index.php?/$1 [L]


RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?/main/$1 [L]
Run Code Online (Sandbox Code Playgroud)

ErrorDocument 404 /index.php
Run Code Online (Sandbox Code Playgroud)

我现在需要在网站上添加一大块.它目前建立在一个单独的codeigniter应用程序中,我需要移动它.该网站的新部分位于controllers/manage_emails/contacts.php ...

我的问题是,我该如何改变htaccess文件从URL中移除main.php大部分的时间,但这时如果你把它www.domain.com/manage_emails/contollername会去到正确的控制器.

谢谢!

des*_*ina 5

根据我的理解,你有两个不同的问题:

1.从Codeigniter的默认值中删除index.php文件

2.将来自'www.domain.com/main/method'的任何电话转接到'www.domain.com/method'

对于第一个问题,我总是使用Elliot Haughin的htaccess文件用于CI:CodeIgniter和mod_rewrite以及多个应用程序

对于第二个问题,您需要在CI中更改config/routes.php,并添加以下行:

$route['(:any)'] = "main/$1"; 
Run Code Online (Sandbox Code Playgroud)

..你也可以查看这篇文章:Codeigniter,绕过主控制器或默认控制器

尝试将这两个问题分开,就像它已经说过的那样,坚持使用CI进行路由,只需使用htaccess从URL中删除index.php.