Codeigniter .htaccess:允许公共访问“public”文件夹中的所有文件和文件夹

时间:2011-10-10 21:32:02

标签: apache .htaccess codeigniter

我正在使用Codeigniter 2.0.3 | Apache 2.2.17 | PHP 5.3.4。

我想要访问'public'文件夹中的所有文件和子文件夹。我已经阅读了Codeigniter wiki中的文章以及google结果中的所有前5页,但没有发现任何有效的内容。

这是文件树:

- application
    - public
        - css
            - style.css
        - img
        - js
- system
- .htaccess

这是.htaccess我用来从URL中删除'index.php'并尝试授予该文件夹的访问权限:

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /CodeIgniter_2.0.3

#Removes access to the system folder by users.
RewriteCond %{REQUEST_URI} ^system.*
RewriteRule ^(.*)$ /index.php/$1 [L]

#Checks to see if the user is attempting to access a valid file,
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d

#Enable access to the images and css folders, and the robots.txt file
RewriteCond $1 !^(index\.php|public|robots\.txt)
RewriteRule ^(.*)$ index.php/$1 [L]
</IfModule>

该网站正在运行,并且URL中不再需要“index.php”,但最后一个条件应该是允许访问公共文件夹,但它对我不起作用,所以http://localhost/CodeIgniter_2.0.3/public/css/style.css 找不到文件。

在config.php中我有:

$config['base_url'] = 'http://localhost/CodeIgniter_2.0.3/';
$config['index_page'] = '';

请帮忙。 感谢!!!

1 个答案:

答案 0 :(得分:0)

根据您当前的结构,您需要将最后RewriteCond更改为:

RewriteCond $1 !^(index\.php|application\/public|robots\.txt)

因为您的.htaccess与应用程序文件夹位于同一目录中,并且您的公用文件夹位于应用程序文件夹中,所以您需要将应用程序/公用文件夹明确标记为可访问。