基于代码点火器 URL 段


CodeIgniter URL Segment-Based

我希望我的URL看起来像:www.domain.com/controller/view/args 而不是index.php?/controller/view/args。实际上,我从不想要网址"索引.php?..."进行验证。任何人都可以给我一个关于如何强制执行这种行为的提示,因为当我这样做时:A) 重定向() 或 B) 手动输入'index.php'"..."URL 将更改为该丑陋模式。

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

#http://codeigniter.com/wiki/Godaddy_Installaton_Tips/
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /index.php?$1 [L]

这是我的配置.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文件(无论索引在哪里.php)。.htaccess文件负责管理参数的重写。如果您查询 yoursite.com/?controller/model,它将与 index.php 在那里一样工作。"?控制器/..."仍然会在那里,但索引.php不会在那里,只要你记得总是链接到非索引.php版本。包含的.htaccess在大多数情况下都有效(尤其是对于apache)。如果代码点火器不在站点的根目录中,您可能需要修改(即 public_html/somedir/{codeigniter_goes_here})。

除了需要将 .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'] = '';

来自 CI 维基: http://codeigniter.com/wiki/mod_rewrite/