Codeigniter - 获得404 Not Found错误

Anj*_*jum 11 php .htaccess codeigniter

我们在godaddy有两个托管包.我们的实时网站使用以下.htaccess文件正常工作.无需在url中使用index.php即可访问网站.

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?/$1 [L] 
Run Code Online (Sandbox Code Playgroud)

我们在godaddy的其他主机上使用了相同的htaccess文件和相同的代码.我们只是想让生产和开发实例分开.但在其他主机上使用相同的代码和htaccess文件,网站显示404页面找不到错误,但网站在url中的index.php工作正常.

我们在两台服务器上都有相同的php版本.只是想知道可能是什么问题?

Geo*_*mes 10

当我将100%工作代码移动到专用Debian服务器时,我也遇到了类似的问题.经过3个小时的研究,我发现了htaccess文件无法正常工作的原因.您需要在Apache配置中允许覆盖htaccess.

这是步骤.

步骤1:

在htaccess文件中添加它

<IfModule mod_rewrite.c>
    RewriteEngine on
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule ^(.*)$ index.php/$1 [L,QSA]
</IfModule>
Run Code Online (Sandbox Code Playgroud)

第2步:

删除codeigniter配置中的index.php

$config['index_page'] = '';
Run Code Online (Sandbox Code Playgroud)

第3步:

允许覆盖Apache配置(命令)中的htaccess

sudo nano /etc/apache2/apache2.conf
Run Code Online (Sandbox Code Playgroud)

并编辑文件并更改为

AllowOverride All
Run Code Online (Sandbox Code Playgroud)

对于www文件夹

第4步:

重启Apache(命令)

sudo /etc/init.d/apache2 restart
Run Code Online (Sandbox Code Playgroud)

在apache2.conf文件中进行任何更改之前,请确保制作该文件的备份副本.如果您使用的是Debian服务器,则可以避免使用sudo命令.我相信你知道如何使用像putty这样的ssh客户端软件连接到你的服务器.如果此方法不适合您,请在下方注释.