我是codeigniter的新手。我的codeigniter安装在localhost / path / learn_ci。
我已经遵循了codeigniter wiki中给出的所有步骤。这是我的.htaccess文件。
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /learn_ci/index.php/$1 [L]
</IfModule>
<IfModule !mod_rewrite.c>
ErrorDocument 404 /index.php
</IfModule>
我还根据需要更改了配置文件。但是当我试图访问时
我收到此错误
“在此服务器上找不到请求的网址/learn_ci/index.php/welcome”
我已仔细检查过...... Apache中的mod_rewrite模块已启用。
RewriteBase解决方案也不起作用。我做错了吗?
答案 0 :(得分:2)
正如其他人所说,请确保在apache配置或虚拟主机文件中将AllowOverride设置为All。 鉴于您已设置codeigniter的路径,您的htaccess应如下所示:
RewriteEngine On
RewriteBase /path/learn_ci
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /path/learn_ci/index.php/$1 [L]
此外,请记住,您使用的任何资产(img,css,js等)都可以使用base_url()
函数或使用相对路径引用。项目的根目录是/ path / learn_ci。
我发现创建虚拟主机并在本地向主机文件添加条目更容易。这样可以更好地模仿现实生活。
答案 1 :(得分:1)
尝试:
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [L]
答案 2 :(得分:1)
您可以执行以下操作:
首先在config.php文件集中
$config['index_page'] = '';
接下来,在codeigniter根文件夹中创建一个.htaccess文件,并添加以下内容:
RewriteEngine on
RewriteCond $1 !^(index\.php|public|\.txt)
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?$1
保存文件。它应该工作。
答案 3 :(得分:0)
将htaccess文件放在root public_html文件夹中与index.php相同的目录中
然后从你的htaccess文件中删除/ learn_ci,只需将其设为/index.php/$1
答案 4 :(得分:0)
检查你的apache配置,它应该是这样的:
Options Indexes FollowSymLinks MultiViews
AllowOverride all
Order allow,deny
allow from all
答案 5 :(得分:0)
我想加上我的回答。我的项目基础网址为http://localhost/newproject/
我在newproject文件夹中包含了htacess文件。
这是代码。
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [L,QSA]
然后我更改配置文件。
$config['index_page'] = '';
$config['uri_protocol'] = 'REQUEST_URI';
并且每件事都开始起作用了。现在nomore index.php文件。