1

CI 如何在使用控制器或访问真实文件夹之间发挥作用?

如果我有一个网址:http://localhost/sencha/touch/

我有一个同名的控制器方法和文件夹(但其中没有索引文件)。我的 Apache 服务器将为我提供文件夹的目录列表,而不是转到控制器方法(这将为我提供正确的索引文件)。

更多上下文:

我有一个 codeIgniter 应用程序,我有一个 sencha Touch 应用程序,一个 Ext JS 应用程序,一些午睡测试。

文件夹结构如下:

-application
   -config
   -controller
     -sencha.php
         methods: 
            touch()
            touch-siesta()
            ext()
            ext-siesta()
     -some_other_controllers...
   -model
   -view
      -template
      -some_other_views....
   -... other CI folders ...
-css
-js
-sencha
   -touch
       app            -> with the sencha mvc structure
   -touch-siesta      -> with the siesta stuff
   -ext
       app            -> with the sencha mvc structure
   -ext-siesta        -> with the siesta stuff
-system
-index.php

以下 url 都给了我目录列表,而不是使用控制器方法。

http://localhost/sencha/touch/
http://localhost/sencha/touch-siesta/
http://localhost/sencha/ext/
http://localhost/sencha/ext-siesta/

更新:

我的重写条件中有这些行:

RewriteCond %{REQUEST_FILENAME} !-f
#RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /index.php?/$1 [L]

我注释掉了我检查它是否是有效目录的行。

4

1 回答 1

2

.htaccess规则将在服务器的其他请求之前首先处理,AFAIK CI 尚未处理,因此,您可以执行以下任一操作:

  1. 不要使用Mod_rewrite
  2. 编辑Mod_rewrite规则,例如:

    RewriteRule /touch/(.*)$  /index.php/touch/$1
    

    但这仅适用于特定请求,效率不高。

  3. 避免文件夹和控制器之间的名称冲突。

于 2013-09-09T10:25:33.833 回答