3

我希望我的 URL 看起来像:www.domain.com/controller/view/args而不是index.php?/controller/view/args。实际上,我从不希望 url "index.php?..." 进行验证。谁能给我一个有关如何强制执行此行为的提示,因为当我这样做时:A)redirect()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]

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

3 回答 3

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})。

于 2012-06-28T21:41:14.130 回答
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'] = '';
于 2012-06-28T21:54:29.107 回答
1

来自 CI Wiki:http ://codeigniter.com/wiki/mod_rewrite/

于 2012-06-28T23:23:47.587 回答