我希望我的网址看起来像: 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');
答案 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)
来自CI Wiki:http://codeigniter.com/wiki/mod_rewrite/