htaccess的重写规则不处理的情况下
平台:Windows 7的专业版64位htaccess的重写规则不处理的情况下
我有Apache 2.2的安装我的开发机(基本上是WAMP设置)上。我在主要的htdoc中安装了几个基于Code Igniter的网站。但是,我陷入了处理主htdocs目录下子目录的情况。
这里就是我有的.htaccess(位于/ CILearn目录下的htdocs)问题:
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
现在这个工作和“现场”是一个控制器,所以index.php文件重定向工作。
这不起作用:
localhost/cilearn/site
有人可以请解释当这些规则应该,为什么它不处理的情况下?
删除
RewriteBase /CILearn/
,并再次测试,看到这个页面http://httpd.apache.org/docs/current/mod/mod_rewrite.html#rewritebase,了解更多有关RewriteBase
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /CILearn/index.php/$1 [NC,L]
你在哪里放置.htaccess?我只是尝试这样做没有RewriteBase和我仍然得到的同样的错误:HTTP://本地主机/ cilearn /网站 – Demolishun 2013-03-27 09:05:36
@Demolishun我把根htaccess以及在其上创建文件夹'CILearn'创造'index.php' – 2013-03-27 09:08:00
我尝试将其移动到根“htdocs”,它不起作用。有趣的是,我在Apache中打开了重写日志记录,它的行为就像是采用相同的路径。所以也许重写它工作正常,但在其他地方有一个错误。 – Demolishun 2013-03-27 09:16:09
会发生这种情况,当你的文件系统路径是区分大小写的。你有两个选择。
使用mod_speling
在根目录的.htaccess(不 /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]
@faa只要您替换绝对URL,您就不需要'RewriteBase'。所以是的,你可以删除它,但它也不会伤害。 – 2013-03-27 11:21:27
对不起人。事实证明这是CodeIgniter的一个问题。原来使用:$ config ['uri_protocol'] ='PATH_INFO';而不是:$ config ['uri_protocol'] ='AUTO';是需要的。所以这与Apache的重写规则无关。所以我想问问版主。我应该删除这个问题还是重新说明它? – Demolishun 2013-03-28 05:57:43