我有一个codeigniter网站,其链接结构已损坏。初始页面正常加载。我的Navbar看起来像:
<a class="brand" href="#">myproject</a>
<div class="nav-collapse">
<ul class="nav">
<li class="active"><a href="#">Home</a></li>
<li ><a href="http://localhost/projectname/basecontroller/Facts">Facts</a></li>
<li ><a href="http://localhost/projectname/basecontroller/about">About</a></li>
<li ><a href="http://localhost/projectname/basecontroller/contact">Contact</a></li>
<!--<li ><a href="http://localhost/projectname/basecontroller/privacy">Privacy</a></li>-->
</ul>
</div><!--/.nav-collapse -->
我已使用根目录中的以下.htaccess文件在本地测试它:
RewriteEngine on
RewriteCond $1 !^(index\.php|images|css|js|assets|robots\.txt)
RewriteRule ^(.*)$ index.php/$1 [L]
这似乎通过转动来修复目录结构(我假设):
http://localhost/projectname/basecontroller/contact
成:
http://localhost/projectname/index.php/basecontroller/contact
当我仔细观察它时,我会认为它会创造:
http://localhost/index.php/projectname/basecontroller/contact
哪个不行,但它有效!有人可以解释一下吗?
答案 0 :(得分:1)
没有codeigniter htaccess这样的东西。 .htaccess是它自己的东西,它与codeigniter完全分开。为了让codeigniter在没有url中的index.php的情况下工作,使用wordpress用于其htaccess文件的内容,对于codeigniter来说也是如此。这是一份副本:
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
还要确保删除application / config / config.php中的index.php,如下所示:
$config['index_page'] = '';
如果这回答了你的问题,请告诉我。
在您的情况下,由于您使用localhost及其设置方式,请将重写规则更改为
RewriteRule。 /projectname/index.php [L]
答案 1 :(得分:1)
.htaccess
从当前目录开始工作。如果您的项目位于/projectname
,那么假设此文件夹为root用户,将应用.htaccess
规则。
这意味着,服务器无视服务器的所有目录层次结构。如果您将.htaccess
放在/dir1
中,那么不的效果与放置在/dir2
中的效果相同,但只会应用于相应的。目录
如果您希望.htaccess
从服务器的根目录起作用,则必须将该文件放在实际的服务器根目录中。