使用mod_rewrite时如何访问文件夹

时间:2013-10-28 15:04:41

标签: regex .htaccess codeigniter

我正在使用Codeigniter,我希望省略url的index.php部分。我设法在我的webroot上使用.htaccess这样做:

RewriteEngine on
RewriteCond $1 !^(index\.php|images|stylesheets|scripts|css|jpg|robots\.txt)
RewriteRule ^(.*)$ /index.php/$1 [L]

并使用

$config['index_page'] = '';

这很有用,像subdomain.example.com/class/method这样的网址按预期工作。

现在我开始将我的视图的样式表和图像添加到我的webroot下名为“style”的文件夹中。但是,当我尝试访问它们时,我收到错误404。 我试图在我的观点中以多种方式使用这些:

<img src="/style/img.jpg">
<img src="style/img.jpg">
<img src="<?php echo base_url('/style/img.jpg');?>">
<img src="http://subdomain.example.com/style/img.jpg"> 
<img src="<?php echo base_url();?>style/img.jpg">

base_url()给出了http://subdomain.example.com/。样式文件的用户模式设置为755,如果这是有用的信息。我的猜测是,.htaccess以某种方式阻止了这些。我用谷歌搜索了,似乎很多人都有类似的问题,但我没有设法找到一个可以帮助我使用图像并省略index.php的答案。这是我在搜索到这些答案后得到的htaccess的地方,但仍然没有运气图像:

#Enable mod rewrite
RewriteEngine On

#Removes access to CodeIgniter 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]

#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

#This last condition enables access to the images and css
#folders, and the robots.txt file
RewriteCond $1 !^(index\.php|style|images|robots\.txt|css)

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

我没有想法。

2 个答案:

答案 0 :(得分:1)

尝试更改.htaccess文件以将index.php删除到此

RewriteEngine on
RewriteBase /
RewriteCond $1 !^(index\.php|ref_doc|media|images|css|js|robots\.txt|favicon\.ico)
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [L]

这应该有效

答案 1 :(得分:0)

尝试在重写规则中添加这样的内容(在htaccess结束时):

 RewriteRule directoryname - [L]

抱歉,我现在无法自己测试。