我需要从site_url()
返回值中删除index.php我不希望搜索引擎缓存我的URL包含index.php.
我通过设置.htaccess文件从url中删除了index.php,但仍然无法工作。
例如,当我在项目的一部分中使用site_url()时,搜索引擎会缓存如下urlhttp://url/index.php/controller.我从system/helper中的site_url函数中删除了index.php,但我认为重定向和form_open函数不能正常工作。
在.htaccess文件中写入
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule .* index.php/$0 [PT,L]
并在config.php 中设置index_page配置
$config['index_page'] = '';
您可以使用base_url()
函数:
echo base_url(); // http://example.com/website
echo site_url(); // http://example.com/website/index.php
CodeIgniter 4
提供的答案似乎是指CodeIgniter的旧版本,现在配置与略有不同
- 转到
/app/Config/App.php
- 找到
public $indexPage
属性并将其更改为:
public $indexPage = '';
- 转到
/public/.htaccess
- 请确保此代码块或多或少如下所示,默认情况下应该已经这样设置
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(['s'S]*)$ index.php/$1 [L,NC,QSA]
使用.env进行配置
也可以使用.env
配置文件
- 转到
.env
- 将此添加到文件
app.indexPage = ''
然后,您可以使用类似于不使用index.php
作为尾随文件的方法
site_url()
echo anchor('news/local/123', 'My News', 'title="News title"');
文件
- 环境变量
- 站点url
- 锚