htaccess RewriteRule不处理案例

时间:2013-03-27 08:45:12

标签: .htaccess mod-rewrite

平台:Windows 7 Pro 64位

我的开发机器上安装了Apache 2.2(基本上是WAMP设置)。我在主要的htdocs中安装了几个基于Code Igniter的网站。但是,我在主htdocs目录下的子目录处理案例时遇到困难。

这是我遇到.htaccess问题的地方(位于htdocs下的/ CILearn目录中):

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

子目录是htdocs下的CILearn。所以URL看起来像这样:

    localhost/CILearn
    localhost/CILearn/site
    localhost/cilearn

现在这个工作,“site”是一个控制器,所以index.php的重定向工作正常。

这不起作用:

    localhost/cilearn/site

有人可以解释这些规则应该在哪里以及为什么不处理案件?

2 个答案:

答案 0 :(得分:1)

删除

RewriteBase /CILearn/

再次测试,有关RewriteBase

的详情,请参阅此页面http://httpd.apache.org/docs/current/mod/mod_rewrite.html#rewritebase
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /CILearn/index.php/$1 [NC,L]   

答案 1 :(得分:1)

当文件系统路径区分大小写时,可能会发生这种情况。你有两个选择。

在根目录.htaccess中使用mod_speling /CILearn/.htaccess)

CheckSpelling on
CheckCaseOnly on

请确保使用

之类的内容激活mod_speling
LoadModule speling_module /path/to/apache2/modules/mod_speling.dll

或者,您可以添加RewriteRule来修复cilearn的案例。这必须在根目录.htaccess

中完成
RewriteEngine on
RewriteRule ^cilearn/(.*) /CILearn/$1 [NC,L]