我们在 godaddy 有两个托管套餐。我们的实时网站使用以下 .htaccess 文件运行良好。无需在 url 中使用 index.php 即可访问网站。
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?/$1 [L]
我们在同样由 godaddy 提供的其他主机上使用了相同的 htaccess 文件和相同的代码。我们只是想将生产和开发实例分开。但在具有相同代码和 htaccess 文件的其他主机上,网站显示 404 页面未找到错误,但网站在 url 中使用 index.php 可以正常工作。
我们在两台服务器上都有相同的 php 版本。只是想知道可能是什么问题?
当我将 100% 工作代码移至专用 Debian 服务器时,我也遇到了类似的问题。经过 3 个小时的研究,我找到了 htaccess 文件不起作用的原因。您需要在 Apache 配置中允许覆盖 htaccess。
以下是步骤。
Step 1:
将其添加到 htaccess 文件中
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [L,QSA]
</IfModule>
Step 2:
删除codeigniter配置中的index.php
$config['index_page'] = '';
Step 3:
允许在 Apache 配置中覆盖 htaccess(命令)
sudo nano /etc/apache2/apache2.conf
并编辑文件并更改为
AllowOverride All
对于 www 文件夹
Step 4:
重新启动 Apache(命令)
sudo /etc/init.d/apache2 restart
在对 apache2.conf 文件进行任何更改之前,请确保创建该文件的备份副本。如果您使用 Debian 服务器,则可以避免使用 sudo 命令。我相信您知道如何使用 putty 等 ssh 客户端软件连接到您的服务器。如果此方法不适合您,请在下面评论。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)