从 Codeigniter 3 的 URI 中删除 index.php

Posted

技术标签:

【中文标题】从 Codeigniter 3 的 URI 中删除 index.php【英文标题】:Removing index.php from the URI in Codeigniter 3 【发布时间】:2020-07-08 09:57:30 【问题描述】:

我已经完成了从 URI 中删除“index.php”的所有上述解决方案。我采取的程序如下: 在 .htaccess 中:

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

在 config.php 中

base_url 设置为

$config['base_url'] = 'https://trawellmate.com/';

中删除了 index.php
$config['index_page'] = '';

这些是建议的解决方案。但没有任何效果。我正在使用 SSL,所有非请求都重定向到 https://trawellmate.com。以下是在 .htaccess 中添加实现的行:

#FORCE NON-WWW REDIRECT
RewriteCond %HTTPS off 
RewriteCond %HTTP_HOST ^(?:www\.)?(.*)$ [NC]
RewriteRule (.*) https://%1%REQUEST_URI [L,R=301]

早期使用非 SSL(在本地主机中处于开发模式)它工作正常。由于我们即将上线,我们将非常感谢您的快速帮助。

【问题讨论】:

我还在 apache 服务器的 000-default.conf 中做了一个永久重定向,将所有非 ssl 重定向到 trawellmate.com 永久重定向/trawellmate.com 按照步骤***.com/questions/9619831/… 【参考方案1】:

您可以尝试使用以下规则。它对我有用。

RewriteEngine On
RewriteCond %HTTPS off [OR]
RewriteCond %HTTP_HOST !^www\. [OR]
RewriteCond %HTTP_HOST ^yourwebsite\.com$ [NC]
RewriteRule ^ https://www.yourwebsite.com%REQUEST_URI [R=301,L,NE]
RewriteCond %THE_REQUEST ^[A-Z]+\ /index\.php(/[^\ ]*)?\ HTTP/ 
RewriteRule ^index\.php(/(.*))?$ yourwebsite.com/$2 [R=301,L]
RewriteCond %REQUEST_FILENAME !-f
RewriteCond %REQUEST_FILENAME !-d
RewriteRule ^(.*)$ index.php?/$1 [L]

【讨论】:

感谢您的快速回复,但没有任何反应。仍然显示 404 错误。你可以自己查。 您使用的是哪个主机?有时它因托管而异。我从 GoDaddy 和 iPage 获得了不同的体验。 AWS EC2 Ubuntu apache2 请查看这个问题:***.com/questions/16556915/… 请按照简单的步骤操作:***.com/questions/9619831/…【参考方案2】:

允许在 Apache 配置(命令)中覆盖 htaccess

sudo nano /etc/apache2/apache2.conf

并编辑文件并更改为

AllowOverride All

【讨论】:

【参考方案3】:

下面的 .htaccess 配置对我有用

RewriteEngine on
RewriteBase /<app_directory>
RewriteCond %REQUEST_FILENAME !-f
RewriteCond %REQUEST_FILENAME !-d
RewriteRule ^(.*)$ /<app_directory>/index.php/$1 [L]

我已将 .htacess 文件放在 /var/www/html 中,即。与应用目录并行

希望您已经为 apache 启用了 mod_rewrite 模块,同时在 apache 的虚拟主机文件(000-default.conf)中添加以下块。修改后请重启服务器。

<Directory /var/www/>
    Options Indexes FollowSymLinks
    AllowOverride All
    Require all granted
</Directory>

【讨论】:

以上是关于从 Codeigniter 3 的 URI 中删除 index.php的主要内容,如果未能解决你的问题,请参考以下文章

从 url 代码中删除 index.php 在 Godaddy Plesk 托管的 codeigniter 中不起作用?

CodeIgniter 3 URI 参数和 404 页面

Codeigniter:您提交的 URI 包含不允许的字符

如何在 CodeIgniter 中设计用户友好的 URI?

不存在 URI。默认控制器集。 Codeigniter 3.1.9 和 PHP 7.0

路由中uri slug的codeigniter正则表达式