为了账号安全,请及时绑定邮箱和手机立即绑定

CodeIgniter htaccess和URL重写问题

CodeIgniter htaccess和URL重写问题

PHP
波斯汪 2019-10-09 17:48:52
我以前从未使用过CodeIgniter,更不用说任何php框架了,我想我可以试试看。一切正常,除了我似乎无法从URL中删除index.php并仍然访问我的页面。我从未使用过MVC结构,因此我正在学习中,如果做错了,请原谅我。我试图通过简单地键入localhost / ci / about来访问我创建的名为“ about_page.php”的视图,但是目前我只能使用localhost / ci / index.php / about来访问它。该页面的控制器为:/application/controllers/about.php 该页面的模型为:/application/models/about_model.php ,该页面的视图为:/application/views/about_page.php我已经搜索了此问题的解决方案,但找不到。这是我已经搜索过的地方:CodeIgniter-删除index.php Codeigniter-如何从URL删除index.php?http://www.farinspace.com/codeigniter-htaccess-file/CodeIgniter在“应用程序”文件夹中随附一个.htaccess文件,该文件仅包含Allow Deny From All。因此,我在根目录中创建了一个新的.htaccess文件,http://localhost/ci/.htaccess并在其中添加了以下代码:RewriteEngine OnRewriteBase /ciRewriteCond %{REQUEST_FILENAME} !-fRewriteCond %{REQUEST_FILENAME} !-dRewriteRule ^(.*)$ index.php/$1 [L]当.htaccess文件位于根目录中时,出现500内部服务器错误。当我将完全相同的文件复制到应用程序文件夹中时,500错误消失了,但是我仍然无法通过使用localhost / ci / about访问about页面我已经更改$config['index_page'] = 'index.php';为$config['index_page'] = '';AND,并且尝试更改$config['uri_protocol']    = 'AUTO';为,$config['uri_protocol']  = 'REQUEST_URI';但是仍然出现内部服务器错误。我进入httpd.conf文件,并取消注释了mod_rewrite.so模块,因此我知道mod_rewrite是活动的。有谁知道为什么这行不通或者我如何获得这项工作?我知道关于StackOverflow的这个问题有很多问题,但是我找不到能回答我问题的问题。我这样做对吗?我是否应该能够通过访问localhost / ci / about来访问about页面,还是必须在“ application”目录中创建“ about”目录?
查看完整描述

3 回答

?
蝴蝶不菲

TA贡献1810条经验 获得超4个赞

有3个步骤要删除index.php。


在application/config.php文件中进行以下更改


$config['base_url'] = 'http://'.$_SERVER['SERVER_NAME'].'/Your Ci folder_name';

$config['index_page'] = '';

$config['uri_protocol'] = 'AUTO';

请.htaccess使用下面的代码文件的根目录


RewriteEngine on

RewriteCond $1 !^(index\.php|resources|robots\.txt)

RewriteCond %{REQUEST_FILENAME} !-f

RewriteCond %{REQUEST_FILENAME} !-d

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

启用重写引擎(如果尚未启用)


一世。首先,使用以下命令启动它:


a2enmod rewrite

ii。编辑档案/etc/apache2/sites-enabled/000-default


全部更改AllowOverride None为AllowOverride All。


注意:在最新版本中,您需要更改/etc/apache2/apache2.conf文件


iii。使用以下命令重新启动服务器:


sudo /etc/init.d/apache2 restart


查看完整回答
反对 回复 2019-10-09
?
喵喵时光机

TA贡献1846条经验 获得超7个赞

您的.htaccess状态略有下降。看我的:


 RewriteEngine On

 RewriteBase /codeigniter  


  RewriteCond %{REQUEST_FILENAME} !-f

  RewriteCond %{REQUEST_FILENAME} !-d

  RewriteCond $1 !^(index\.php|images|robots\.txt|css|docs|js|system)

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

注意“ codeigniter”在两个地方。


之后,在您的配置中:


base_url = "http://localhost/codeigniter"

index = ""

在适当情况下将codeigniter更改为“ ci”


查看完整回答
反对 回复 2019-10-09
?
慕的地8271018

TA贡献1796条经验 获得超4个赞

这对我有用


将您的.htaccess文件移动到根文件夹(在我的情况下,位于应用程序文件夹之前)


RewriteEngine on

RewriteBase /yourProjectFolder

RewriteCond %{REQUEST_FILENAME} !-f

RewriteCond %{REQUEST_FILENAME} !-d

RewriteRule .* index.php/$0 [PT,L]

我的config.php看起来像这样(application / config / config.php)


$config['base_url'] = "";

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

$config['uri_protocol'] = "AUTO";

让我知道它是否也适用于你们!干杯!


查看完整回答
反对 回复 2019-10-09
  • 3 回答
  • 0 关注
  • 526 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信