.htaccess mod_rewrite无法正常工作

时间:2012-08-08 13:25:15

标签: apache .htaccess codeigniter mod-rewrite wamp

我在我的开发机器上使用Wamp开发项目。这是我的.htaccess:

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

这是放在localhost / project中的,所以任何像localhost / project / something这样的请求都被路由到localhost / project / index.php / something

但是,它们被路由到localhost / index.php / something

我怀疑它与我如何使用RewriteBase有关。我该如何解决?

2 个答案:

答案 0 :(得分:3)

您需要删除规则中的前导斜杠:

# no slash---------v
RewriteRule ^(.*)$ index.php?$1 [L] 

Apache猜测RewriteRule的目标是URL路径还是文件路径。当它以斜杠开头时,它假定它是一个URL路径并且它是绝对的,所以它将转到文档根目录的index.php。没有斜杠,它要么猜测文件路径,要么使用重写基础来帮助确定使用哪个。

您还应该将RewriteBase指令移到规则之上。

答案 1 :(得分:1)

为什么不把基数放在重写中呢?

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

编辑:

这个问题可能会对您有所帮助:htaccess RewriteBase