Codeigniter |从site_url或锚点函数中删除index.php


Codeigniter | Remove index.php from site_url or anchor functions

我需要从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的旧版本,现在配置与略有不同

  1. 转到/app/Config/App.php
  2. 找到public $indexPage属性并将其更改为:

public $indexPage = '';
  1. 转到/public/.htaccess
  2. 请确保此代码块或多或少如下所示,默认情况下应该已经这样设置

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(['s'S]*)$ index.php/$1 [L,NC,QSA]

使用.env进行配置

也可以使用.env配置文件

  1. 转到.env
  2. 将此添加到文件

app.indexPage = ''

然后,您可以使用类似于不使用index.php作为尾随文件的方法

site_url()
echo anchor('news/local/123', 'My News', 'title="News title"');

文件

  • 环境变量
  • 站点url