Php 基于URL段的CodeIgniter

Php 基于URL段的CodeIgniter,php,codeigniter,codeigniter-2,codeigniter-routing,Php,Codeigniter,Codeigniter 2,Codeigniter Routing,我希望我的URL看起来像:www.domain.com/controller/view/args而不是index.php?/controller/view/args。实际上,我从来都不想让url“index.php?…”进行验证。有谁能给我一个关于如何强制执行此行为的提示,因为当我这样做时:a)redirect()或B)手动键入'index.php'“…”url会变成那种丑陋的模式 这是我的.htaccess文件(我不知道是否需要此文件,只需从internet复制并粘贴即可): 这是我的conf

我希望我的URL看起来像:www.domain.com/controller/view/args而不是index.php?/controller/view/args。实际上,我从来都不想让url“index.php?…”进行验证。有谁能给我一个关于如何强制执行此行为的提示,因为当我这样做时:a)redirect()B)手动键入'index.php'“…”url会变成那种丑陋的模式

这是我的.htaccess文件(我不知道是否需要此文件,只需从internet复制并粘贴即可):

这是我的config.php:

$config['base_url'] = '';
$config['index_page'] = 'index.php?';
$config['uri_protocol'] = 'AUTO';
$config['enable_query_strings'] = FALSE;
这就是改变行为的原因:

redirect('...blah', 'either location or refresh');

实际上,您需要codeigniter目录根目录中的.htaccess文件(无论index.php在哪里)。.htaccess文件负责管理参数的重写。如果查询yoursite.com/?controller/model,其工作原理与index.php相同。“.controller/…”仍将存在,但只要记住始终链接到non-index.php版本,index.php就不会存在。在大多数情况下,included.htaccess都可以使用(尤其是apache)。如果codeigniter不在您站点的根目录中(即public_html/somedir/{codeigniter_goes_here}),您可能需要进行修改。

除了需要将.htaccess放在codeigniter安装的根目录中(与index.php在同一位置),您还需要确保mod_rewrite正在Apache安装中工作,否则.htaccess文件将被忽略

此外,您需要在Apache虚拟主机中设置AllowOverride指令(请参阅)-它应该设置为类似以下内容:

<VirtualHost *:80>
...
AllowOverride All
...
</VirtualHost>
致:


在CI Wiki中:

Yup,.htaccess位于index.php旁边的根目录中。我可以访问“/a/b/c”和“index.php?/a/b/c”,但每当我调用“重定向(…)”时,它都会将url从前者更改为后者(糟糕)。请尝试将“index.php?”更改为“仅”?。天哪。。。你一针见血(手指交叉)。如果我使用mod_rewrite,我必须设置['index_page']='',就像评论告诉我的那样…:-/
<VirtualHost *:80>
...
AllowOverride All
...
</VirtualHost>
$config['index_page'] = 'index.php?';
$config['index_page'] = '';