无法从实时网站中的codeigniter网址中删除index.php

时间:2017-10-18 11:28:58

标签: php .htaccess codeigniter url-rewriting

我需要从我的codeigniter网址中删除index.php。这是我在.htaccess文件中的代码:

RewriteEngine On
RewriteRule ^index.php/(.*)$ /$1 [R=302,L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond $1 !^(index\.php|images|robots\.txt)
RewriteRule ^(.*)$ index.php?/$1 [L]

和config.php文件中的修改:

$config['base_url'] = 'http://example.com/'
$config['index_page'] = '';
$config['uri_protocol'] = 'REQUEST_URI';

在我的localhost中正常工作。但在我的实时网站中,它会产生404错误。

我可以使用index.php(' http://example.com/index.php/Home')加载网址,但是' http://example.com/Home'生成404错误。为什么这只发生在现场?还有其他需要改变吗? 还有一件事,它不是apache服务器,我的网站是在iis中发布的

3 个答案:

答案 0 :(得分:0)

将以下代码粘贴到.htaccess文件中

   RewriteEngine On
   #RewriteBase /
   RewriteCond %{REQUEST_FILENAME} !-f
   RewriteCond %{REQUEST_FILENAME} !-d
   RewriteRule (.*) index.php/$1

然后转到config文件夹中的配置文件,并从

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

如果您的网站位于子文件夹中,那么您必须在" #RewriteBase /"之后添加子文件夹名称。

答案 1 :(得分:0)

我认为你错过了

  

RewriteBase /

答案 2 :(得分:0)

这是完整的htaccess,它应该驻留在主项目文件夹中。如果它位于子文件夹中,则必须编写重写库。

<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/
  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: ElliotHaughin

  ErrorDocument 404 /index.php
</IfModule>