CodeIgniter - 如何从 URL 中隐藏 index.php
Posted
技术标签:
【中文标题】CodeIgniter - 如何从 URL 中隐藏 index.php【英文标题】:CodeIgniter - How to hide index.php from the URL 【发布时间】:2011-02-15 18:15:08 【问题描述】:这就是我的.htaccess
的样子。 .htaccess
位于/www/scripts
目录中,该目录是codeigniter 的system
目录的父目录,并且还包含index.php
。我在我的 Apache 2.2.x 中启用了mod_rewrite
。这是在 Ubuntu 9.10 服务器上。
我关注了这个link,但它不起作用。我需要在 apache2 中做些什么,任何特定的配置才能使其正常工作吗?
RewriteEngine on
RewriteBase /
RewriteCond %REQUEST_FILENAME !-f
RewriteCond %REQUEST_FILENAME !-d
RewriteRule ^(.*)$ index.php/$1 [QSA,L]
【问题讨论】:
当您在没有 index.php 的情况下访问您的网站时会发生什么?你得到什么错误? 试试这些链接,它可能对您的问题有所帮助:http://ellislab.com/forums/viewthread/153950/http://ellislab.com/forums/viewthread/153372/ 如果您刚刚启用了 mod_rewrite,那么您可能只需要重新启动服务器。 【参考方案1】:使用这个:
RewriteEngine On
RewriteCond %REQUEST_FILENAME !-f
RewriteCond %REQUEST_FILENAME !-d
RewriteRule ^(.*)$ /folder/index.php/$1 [L]
【讨论】:
我希望你在你的服务器中启用了 mod_rewrite 是的,我已启用 mod_rewrite,我想我取得了一些进展,但现在我在 apache 错误日志中收到此错误,如果启用 .htaccess “由于可能的配置,请求超出了 10 个内部重定向的限制错误” 您可能希望将此作为正确答案进行检查。这对其他用户来说会很容易。 RewriteCond %REQUEST_FILENAME !-f RewriteCond %REQUEST_FILENAME !-d ... 表示如果浏览器中指定名称的文件不存在,或者浏览器中的目录不存在则继续下面的重写规则【参考方案2】:只需将以下代码放入您的 .htaccess 文件中
RewriteEngine on
RewriteCond $1 !^(index\.php|images|robots\.txt)
RewriteRule ^(.*)$ /index.php/$1 [L]
来源:http://codeigniter.com/user_guide/general/urls.html
【讨论】:
【参考方案3】:这是一个简单的解决方案。
RewriteEngine on
RewriteCond %REQUEST_FILENAME !-f
RewriteCond %REQUEST_FILENAME !-d
RewriteRule .* index.php/$0 [PT,L]
【讨论】:
【参考方案4】:CodeIgniter User Guide on URLs
【讨论】:
以上是关于CodeIgniter - 如何从 URL 中隐藏 index.php的主要内容,如果未能解决你的问题,请参考以下文章
IIS 环境 CodeIgniter 隐藏 URL 中的 index.php
Codeigniter 3.1.6 - 如何从 url 中删除 index.php