【问题标题】:CodeIgniter removing index.php from base urlCodeIgniter 从基本 url 中删除 index.php
【发布时间】:2014-02-18 07:40:05
【问题描述】:

我正在使用 LAMPP 堆栈下的 CodeIgniter。

我将以下设置作为我的基本网址

http://example.com/subfolder

这是我的文件夹结构

root
 |
 |
ci_engine
public_html
 |
 |----subfolder
 |     |
 |     |
 |     |------applications, index.php, .htaccess
public_ftp
 |
 |
other_stuff

以下是我的.htaccess

<IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteBase /

    #Removes access to the system folder by users.
    #Additionally this will allow you to create a System.php controller,
    #previously this would not have been possible.
    #'system' can be replaced if you have renamed your system folder.
    RewriteCond %{REQUEST_URI} ^system.*
    RewriteRule ^(.*)$ /index.php?/$1 [L]

    #When your application folder isn't in the system folder
    #This snippet prevents user access to the application folder
    #Submitted by: Fabdrol
    #Rename 'application' to your applications folder name.
    RewriteCond %{REQUEST_URI} ^application.*
    RewriteRule ^(.*)$ /index.php?/$1 [L]

    #Checks to see if the user is attempting to access a valid file,
    #such as an image or css document, if this isn't true it sends the
    #request to index.php
    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> 

如果我输入http://example.com/subfolder/controller/function

如果我输入http://example.com/subfolder/index.php?/controller/function

我会收到 404 错误。

我应该如何解决这个问题?

【问题讨论】:

    标签: php .htaccess codeigniter


    【解决方案1】:

    这是你的 htaccess

    Options +FollowSymLinks
    Options -Indexes
    RewriteEngine On
    RewriteBase /
    
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    
    RewriteCond $1 !^(index\.php)
    RewriteRule ^(.*)$ /index.php/$1 [L]
    

    设置

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

    $config['index_page'] = ''; 
    

    如果未启用,请使用 sudo a2enmod rewrite &amp;&amp; sudo service apache2 restart 启用您的 mod 重写 (Ubuntu)。

    Options -Indexes 是可选的(只是为了避免列出目录)

    【讨论】:

      【解决方案2】:

      您可以从

      更改 index.html
      application/config/rought.php
      

      在你找到的这个页面

      $route['default_controller'] = "content/pages";
      

      改成

      $route['default_controller'] = "";
      

      【讨论】:

        猜你喜欢
        • 2016-05-14
        • 2014-10-28
        • 2012-06-15
        • 2012-09-21
        • 2011-10-12
        • 2017-07-16
        • 2014-02-28
        相关资源
        最近更新 更多