从 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 中不起作用?