CodeIgniter URL基于段

时间:2012-06-28 21:34:14

标签: php codeigniter codeigniter-2 codeigniter-routing

我希望我的网址看起来像: www.domain.com/controller/view/args 而不是 index.php?/ controller / view / args 。实际上,我从不想要网址“index.php?...”进行验证。任何人都可以给我一个如何强制执行此行为的提示,因为当我这样做时: A)重定向() B)手动输入'index.php'“。 ..“网址改变了那种难看的模式。

这是我的.htaccess文件(我不知道是否需要此文件,只需复制+从互联网上粘贴):

#http://codeigniter.com/wiki/Godaddy_Installaton_Tips/

RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /index.php?$1 [L]

这是我的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');

3 个答案:

答案 0 :(得分:2)

您实际上需要codeigniter目录的根目录中的.htaccess文件(index.php所在的位置)。 .htaccess文件负责管理参数的重写。如果您查询yoursite.com/?controller/model,它的工作方式与index.php相同。 “?controller / ...”仍然存在,但只要你记得总是链接到非index.php版本,index.php就不会存在。包含的.htaccess在大多数情况下都可以使用(特别是使用apache)。如果codeigniter不在您站点的根目录中(即public_html / somedir / {codeigniter_goes_here}),您可能需要修改。

答案 1 :(得分:1)

除了需要将.htaccess放在codeigniter安装的根目录(与index.php位于同一位置)之外,还需要确保mod_rewrite正在处理Apache安装,否则就是。 htaccess文件将被忽略。

此外,您需要在Apache虚拟主机中设置AllowOverride指令(请参阅http://httpd.apache.org/docs/2.0/mod/core.html#allowoverride) - 它应设置为:

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

您还应该更改:

$config['index_page'] = 'index.php?';

要:

$config['index_page'] = '';

答案 2 :(得分:1)