CodeIgniter 从 url 中删除 index.php

我目前的网址看起来像这个 [mysite]index.php/[rest of the slug]
我想从这些网址中剥离 index.php

在我的 apache2服务器上启用了 mod_rewrite

我的代码设计器根 .htaccess文件包含,

RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule .* index.php/$0 [PT,L]

但还是不行,我哪里做错了?

442527 次浏览

使用这个,

RewriteEngine On
RewriteBase /root_folder_name/
RewriteCond %{REQUEST_URI} ^system.*
RewriteCond $1 !^(index\.php|images|js|uploads|css|robots\.txt)
RewriteRule ^(.*)$ /index.php/$1 [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [L]

希望这个能帮上忙。

试试这个,可能对你有帮助,因为它对我有用。

RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule .* index.php/$0 [PT,L]

把代码放到你的根 htaccess 文件中

$config['index_page'] = '';

在配置文件中。

如果你遇到任何问题,请告诉我。

试试以下方法

打开 config.php 并执行以下替换操作

$config['index_page'] = "index.php"

$config['index_page'] = ""

在某些情况下,uri_protocol的默认设置不能正常工作。 换掉就是了

$config['uri_protocol'] ="AUTO"

作者

$config['uri_protocol'] = "REQUEST_URI"

. htaccess

RewriteEngine on
RewriteCond $1 !^(index\.php|resources|robots\.txt)
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [L,QSA]

注:。Htaccess 代码根据托管服务器的不同而不同。在一些主机服务器(例如: Godaddy)需要使用额外的?在上面代码的最后一行。在适用情况下,以下行将替换为最后一行:

// Replace last .htaccess line with this line
RewriteRule ^(.*)$ index.php?/$1 [L,QSA]
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule .* index.php/$0 [PT,L]

使用

RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule .* index.php/$1 [PT,L]

如果你在这个顺序中有 url site.com/index.php/class/method/id

注意: 在 config.php 中删除 index.php 应该是 config [ index _ page ] = “”

注意最后一行的区别,使用 $1代替 $0

您可以转到 Config config.php文件并从该变量中删除 index.php 值

$config['index_page'] = 'index.php'; // delete index.php

创建.htaccess 文件并将此代码粘贴到其中。

<IfModule mod_rewrite.c>


Options +FollowSymLinks


RewriteEngine On
#Send request via index.php
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [L]


</IfModule>

很有可能

第一步:

在 htaccess 文件中添加此文件

<IfModule mod_rewrite.c>
RewriteEngine On
#RewriteBase /


RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [QSA,L]
</IfModule>

第二步:

在 codeigniter 配置中删除 index.php

$config['base_url'] = '';
$config['index_page'] = '';

第三步:

允许在 Apache 配置中重写 htaccess (命令)

sudo nano /etc/apache2/apache2.conf

并编辑文件 & 更改为

AllowOverride All

用于 www 文件夹

第四步:

启用 apache mod 重写(命令)

sudo a2enmod rewrite

第五步:

重新启动 Apache (命令)

sudo /etc/init.d/apache2 restart

从 Codeigniter 的 url 中删除 index.php 只需要三个步骤

1)与应用程序持有者并行创建.htacess 文件,只需复制以下代码:

RewriteEngine On
RewriteBase /CodeIgniter/
RewriteCond %{REQUEST_URI} ^system.*
RewriteRule ^(.*)$ /index.php/$1 [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [L]

2)在应用程序文件夹的 config.php 中将 $config [‘ index _ page’]改为空白,如下所示:

$config['index_page'] = '';

3)启用 apache 的“ rewrite _ module”。

重新启动你的阿帕奇和它的完成。

详情: http://sforsuresh.in/removing-index-php-from-url-of-codeigniter-in-wamp/

  Removing index.php from url of codeigniter


Three steps are require to remove index.php from url in Codeigniter.


1)Create .htacess file in parallel to application holder and just copy past the following code:


RewriteEngine On
RewriteBase /CodeIgniter/
RewriteCond %{REQUEST_URI} ^system.*
RewriteRule ^(.*)$ /index.php/$1 [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [L]


2) Change $config['index_page'] to blank in config.php in application folder as below:


$config['index_page'] = '';


3) Enable “rewrite_module” of apache.

开发和生产

    # Development
RewriteEngine On
RewriteBase /your_local_folder/
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond $1 !^(index\.php|images|scripts|styles|vendor|robots\.txt)
RewriteRule ^(.*)$ index.php/$1 [L]


#Production PHP5 CGI mode
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond $1 !^(index\.php|images|scripts|styles|vendor|robots\.txt)
RewriteRule ^(.*)$ index.php?/$1 [L]

按照这些步骤,你的问题就会得到解决

1-从这里下载. htaccess 文件 https://www.dropbox.com/s/tupcu1ctkb8pmmd/.htaccess?dl=0

2-更改第5行上的 CodeIgnitor 目录名称。 比如我的目录名是 abc (加上你的名字)

3-保存.htaccess 文件在主目录(abc)的代码设计器文件夹

4-在 Config.php 文件中将 uri _ protocol 从 AUTO 更改为 PATH _ INFO

注意: 首先,必须删除注释,从 apachi 的 httpd.conf 启用 mod _ rewrite

步骤1 = > 将.htaccess 文件放置在存在应用程序和系统文件夹的根文件夹中。

步骤2 = > 如果你的网页路径使用子文件夹- yourdomain.com/project/-然后使用以下代码在 htaccess 文件

RewriteEngine on
RewriteBase    /project/
RewriteCond $1 !^(index\.php|images|robots\.txt)
RewriteRule ^(.*)$ /project/index.php/$1 [L]

如果你的网络路径使用根文件夹如 -yourdomain.com-然后使用以下代码在 htaccess 文件

RewriteEngine on
RewriteBase    /
RewriteCond $1 !^(index\.php|images|robots\.txt)
RewriteRule ^(.*)$ /index.php/$1 [L]

用这个密码。更改第2行,因为您有您的文件夹名称。其中 index.php 文件和文件夹应用程序,系统文件夹位于。大多数问题都是由二线引起的。我们不配置项目所在位置的文件夹名称。重要的是第二行。这很容易删除 index.php。 重写引擎 RewriteBase/project _ file _ name 重写 Cond% { REQUEST _ FILENAME } !-f 重写 Cond% { REQUEST _ FILENAME } !-d RewriteRule. * index.php/$0[ PT,L ]

#RewriteEngine on
#RewriteCond $1 !^(index\.php|images|robots\.txt)
#RewriteRule ^(.*)$ index.php/$1 [L]

转到 controller/config.php 文件。

Config [‘ index _ url’] =”;

更多研究参考

Https://ellislab.com/expressionengine/user-guide/urls/remove_index.php.html

Https://ellislab.com/blog/entry/fully-removing-index.php-from-urls

首先,你必须在 apache 服务器上重写 engine。这个链接将帮助你做到这一点

Http://www.anmsaiful.net/blog/php/enable-apache-rewrite-module.html

RewriteEngine On
RewriteBase /your_folder_name/


RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d


RewriteRule ^(.*)$ index.php?/$1 [L]

这将是你的.htaccess 文件。 现在试试,这个设置对我很有用。

步骤:-1 打开文件夹“ application/config”并打开文件“ config.php”. find 并替换 config.php 文件中的以下代码。

//find the below code
$config['index_page'] = "index.php"
//replace with the below code
$config['index_page'] = ""

步骤:-2 转到 CodeIgniter 文件夹并创建. htaccess

Path:
Your_website_folder/
application/
assets/
system/
.htaccess <——— this file
index.php

步骤:-3 在. htaccess 文件中写下面的代码

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [L]
</IfModule>

步骤:-4 在某些情况下,uri _ protocol 的默认设置不能正常工作。要解决这个问题,只需打开文件“ application/config/config.php”,然后查找并替换下面的代码

//Not needed for CodeIgniter 3 its already there.
//find the below code
$config['uri_protocol'] = "AUTO"
//replace with the below code
$config['uri_protocol'] = "REQUEST_URI"

除了在 wamp 服务器中,其他都不能工作,因为 rewrite _ module 在默认情况下是禁用的,所以我们需要启用它。为此,请做以下事情

  1. 左键单击 WAMP 图标
  2. 阿帕奇人
  3. Apache 模块
  4. 左键单击 rewrite _ module

原始文件

示例连结

有两个步骤:

1)编辑 config.php

$config['index_page'] = 'index.php';

$config['index_page'] = '’;

2)创建/编辑. htaccess 文件

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [L]

1. 在根目录中创建一个新的.htaccess 文件。

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [L]
</IfModule>`

2. 转到 config.php 文件并将其从 $config['index_page'] = 'index.php'更改为 $config['index_page'] = ''

+ Copy .htaccess from Application to Root folder
+ edit .htaccess and put


<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /ci_test/


#Removes access to the system folder by users.
#Additionally this will allow you to create a System.php controller,
#previously this would not have been possible.
#'system' can be replaced if you have renamed your system folder.
RewriteCond %{REQUEST_URI} ^system.*
RewriteRule ^(.*)$ /index.php?/$1 [L]


#When your application folder isn't in the system folder
#This snippet prevents user access to the application folder
#Submitted by: Fabdrol
#Rename 'application' to your applications folder name.
RewriteCond %{REQUEST_URI} ^application.*
RewriteRule ^(.*)$ /index.php?/$1 [L]


#Checks to see if the user is attempting to access a valid file,
#such as an image or css document, if this isn't true it sends the
#request to index.php
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?/$1 [L]
</IfModule>


<IfModule !mod_rewrite.c>
# If we don't have mod_rewrite installed, all 404's
# can be sent to index.php, and everything works as normal.
# Submitted by: ElliotHaughin


ErrorDocument 404 /index.php
</IfModule>


Note: make sure your web server is enable for  "rewrite_module"


+ Remove index.php from $config['index_page'] = 'index.php';
- edit config.php in application/config
- search for index.php
change it from  $config['index_page'] = 'index.php'; to  $config['index_page'] = '';

请观看这个视频作为参考 https://www.youtube.com/watch?v=HFG2nMDn35Q

我认为你的所有设置是好的,但你做错了你的 htaccess 文件去添加你的 htaccess 到你的项目文件

Project _ file-> htaccess

并将此代码添加到您的 htaccess

RewriteEngine on
RewriteCond $1 !^(index\.php|resources|robots\.txt)
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [L,QSA]
  1. 制作 .htaccess文件,并把这个代码

     RewriteEngine on
    RewriteCond $1 !^(index\.php|resources|robots\.txt)
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule ^(.*)$ index.php/$1 [L,QSA]
    
  2. change

    $config['index_page'] = '';
    

remove index.php present in config.php file

  1. rewrite on from your server.

除了这些答案之外,你还可以添加 index.php 或者编辑它(如果它已经存在的话)——为了安全起见,你想禁用 index.php,不要在你的网站目录中列出文件——然后将内容改为

<?php
header('location:your_required_starting.php');
?>

您可以转到 application config config.php 文件并删除 index.php



$config['index_page'] = 'index.php';   // delete index.php


换衣服



$config['index_page'] = '';


小事情: (可选)

在将 vhosts 中的重写引擎状态更新为 Rewrite ON后,尝试重新启动 Apache。

需要注意的一个关键问题是:

在 Apachevhosts 文件中,检查是否有此脚本行 AllowOverride None 如果是,请删除/注释此行。

我的 vhosts 文件脚本: (之前)

<VirtualHost *:80>
DocumentRoot "/path/to/workspace"
ServerName ciproject
ErrorLog "/path/to/workspace/error.log"
CustomLog "/path/to/workspace/access.log" common
Directory   "/path/to/workspace">
Options Indexes FollowSymLinks
AllowOverride None
Order allow,deny
Allow from all
</Directory>
</VirtualHost>

我的 vhosts 文件脚本: (之后)

<VirtualHost *:80>
DocumentRoot "/path/to/workspace"
ServerName ciproject
ErrorLog "/path/to/workspace/error.log"
CustomLog "/path/to/workspace/access.log" common
Directory   "/path/to/workspace">
Options Indexes FollowSymLinks
#AllowOverride None
Order allow,deny
Allow from all
</Directory>
</VirtualHost>

我面临着同样的问题,挣扎了大约一天,一切都很好。后来,经过反复试验,发现了这个东西。除掉这个之后,我的工作就完成了。 URL 现在不会查找 index.php:)

这些答案都不错,但是对于一个新手来说(第一次做) ,这些答案会让人感到困惑。还有其他 htaccess 文件驻留在控制器,但我们必须编辑或添加的 htaccess 在主项目文件夹。

这是您的 codeigniter 文件夹,其中的文件驻留,如应用程序,系统,资产,上传等。

Your_project_folder/
application/
assets/
cgi-bin/
system/
.htaccess---->(Edit this file if not exist than create it)
index.php

更改此文件,如下所示:

<IfModule mod_rewrite.c>
RewriteEngine On
# !IMPORTANT! Set your RewriteBase here and don't forget trailing and leading
#  slashes.
# If your page resides at http://www.example.com/mypage/test1
# then use RewriteBase /mypage/test1/
# Otherwise /
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?/$1 [L]
</IfModule>


<IfModule !mod_rewrite.c>
# If we don't have mod_rewrite installed, all 404's
# can be sent to index.php, and everything works as normal.
# Submitted by: Anand Pandey
ErrorDocument 404 /index.php
</IfModule>

当然,您需要更改 application/config/config.php 中的两行代码

//find the below code
$config['index_page'] = "index.php";
$config['uri_protocol'] ="AUTO"
//replace with the below code
$config['index_page'] = "";
$config['uri_protocol'] = "REQUEST_URI";

如果上述所有解决方案都不起作用,那么在项目文件夹中,它们将是两个文件 index.html 和 index.php,将 index.html 重命名为 index _ 1.html 并浏览项目。

请注意“ . php”之后添加的“ ?”字符的区别,特别是在处理 CodeIgniter 时:

RewriteRule ^ (. *) $index.php/$1[ L ]

对。

RewriteRule ^ (. *) $index.php?/$1[ L ]

这取决于其他一些事情... 如果不行,试试其他选项!

您可以通过在 . htaccess中放置一些代码来从 url 中删除 Index.php

文件路径: root > . htacess

RewriteEngine On
RewriteBase /


RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?/$1 [L]

希望能成功。

您可以通过创建。Htaccess 文件,该文件的内容如下所示

RewriteEngine on
RewriteCond $1 !^(index\.php|assets|images|js|css|uploads|favicon.png)
RewriteCond %(REQUEST_FILENAME) !-f
RewriteCond %(REQUEST_FILENAME) !-d
RewriteRule ^(.*)$ ./index.php/$1 [L]

保存该文件,并且在 config.php 文件中的更改是正确的

$config['index_page'] = '';

我希望跑得成功

两步就解决了。

  1. 更新配置文件 Application/config/config.php中的2个参数
$config['index_page'] = '';
$config['uri_protocol'] = 'REQUEST_URI';
  1. 更新根文件夹中的文件 . htaccess
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?/$1 [L]
</IfModule>

试试这个 重写引擎

        # Removes index.php from ExpressionEngine URLs
RewriteCond $1 !\.(gif|jpe?g|png)$ [NC]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /index.php/$1 [L]
</IfModule>

在 CodeIgniter 3.16中使用 htaccess 访问

删除 index.php 文件

& 也

将 HTTP 重定向到 HTTPS

密码如下:

  • 转到 application\config\config.php文件

做出改变

$config['index_page'] = 'index.php';

$config['index_page'] = '';
  • 现在,打开.htaccess 文件,并更新下面的代码
RewriteEngine on
RewriteBase /


## Redirect SSL
RewriteCond %{SERVER_PORT} 80
RewriteRule ^(.*)$ https://%{HTTP_HOST}/$1 [R,L]


## Remove fron url index.php
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond $1 !^/(index\.php|assets/|humans\.txt)
RewriteRule ^(.*)$ index.php/$1 [L]


这对我有用。 在 codeigniter 3.1.11,PHP 5.6.40中测试 我在测试服务器的 apache2配置中使用了一个虚拟主机。

<VirtualHost *:80>
ServerAdmin webmaster@dummy-host2.example.com
DocumentRoot (__DIR__)
ServerName mydomain
##ErrorLog "logs/dummy-host2.example.com-error.log"
##CustomLog "logs/dummy-host2.example.com-access.log" common
<Directory "(__DIR__)">
Require all granted
AllowOverride All
</Directory>
</VirtualHost>

和/. htaccess 内容

    <IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [L]
</IfModule>
  1. 在根目录中创建. htaccess 文件(根据项目名更改 RewriteBase)

创建.htaccess 文件后,向该文件添加以下代码。

RewriteEngine On
RewriteBase /CodeigniterCURD/
RewriteCond %{REQUEST_URI} ^system.*
RewriteRule ^(.*)$ /index.php/$1 [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [L]
  1. 删除 index.php 文件(INCONFIG.PHP 文件)

在文本编辑器中打开 config.php 文件并从这里删除 index.php。

改变:

$config['index_page'] = "index.php";
To:
$config['index_page'] = '';

但在少数情况下,url _ protocol 的默认设置可能无法正常工作。为了解决这个问题,我们需要打开 config.php 和

更改: 根据您的项目名称

$config['base_url'] = 'http://localhost:8082/CodeIgniter/';




[![enter image description here][1]][1]




[1]: https://i.stack.imgur.com/1Ew3Q.png

在您的根文件夹中添加.htaccess 并通过以下代码:

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [L]

您必须将. htaccess 放在 htdocs 文件夹中,并且

RewriteRule ^(.*)$ /index.php/$1 [L]

必须这样写:

RewriteRule ^(.*)$ /your_codeigniter_project_folder/index.php/$1 [L]

是的,我知道如果你在 Xampp 有其他的项目,他们会搞砸:

当您将站点上传到远程服务器时,您可以从. htaccess 文件内容中删除/your _ codeigniter _ project _ file/

你可以试试这个,对我有用

用以下代码替换 htaccess 文件代码

RewriteEngine on
RewriteCond $1 !^(index\.php|resources|robots\.txt)
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule .* index.php/$0 [PT,L]

并在配置文件中进行如下更改

$config['index_page'] = '';