我有四个相同的页面,只是在某些标识符上有所不同,但是逻辑非常相同。它们都在localhost上运行。这些页面中的三个页面可以在实时服务器上正常运行,但是其中一个页面由于某些我无法理解的原因而返回404。
我使用XAMPP 3.2.2和Sublime在本地开发它。我将其移至GoDaddy Deluxe Linux直播。我的Codeigniter版本是3.1.10。
我已经尝试过StackOverflow上大多数问题的答案:
所有控制器和型号名称的首字母均以大写形式出现在文件名和文件内部。
此处的所有.htaccess代码:https://github.com/tasmanwebsolutions/htaccess_for_codeigniter
我有两个.htaccess文件,其中一个在应用程序文件夹中,一个在外部。我不知道这是否会使系统感到困惑?但是我在不同主机上的另一个网站具有相同的.htaccess文件,它们可以正常工作。而且无论如何,如果这使系统感到困惑,为什么它只影响四个相同页面之一?
.htaccess在应用程序文件夹之外
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /index.php/$1 [L]
</IfModule>
.htaccess在应用程序文件夹中:
<IfModule authz_core_module>
Require all denied
</IfModule>
<IfModule !authz_core_module>
Deny from all
</IfModule>
四个文件的所有控制器都具有以下功能:
<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
//session_start(); //we need to call PHP's session object to access it through CI
class Question1 extends CI_Controller
{
其余的是正常代码,正在处理这四个文件中的三个。
在配置中。PHP我有:
$config['uri_protocol'] = 'REQUEST_URI';
和base_url很棒。
就我所知,模型和视图都还可以,并且网站的其余部分都可以通过附带的.htaccess正常运行。我的路线也可以。
我现在迷失了。
PS。我有一个自定义的404页面。当我输入Assessment.com/index.php/question1时,它会显示该自定义404页面。但是,当我打开Assessment.com/question1时,它会显示codeigniter自己的404页面(出于某些原因,而不是我的自定义页面)。我认为这说明一切,我只是不知道什么。
编辑
这是我的routes.php:
$route['default_controller'] = 'home';
$route['404_override'] = 'Error404';
$route['translate_uri_dashes'] = TRUE;
我选择不执行$ route ['question1'] =“ Question1”; 在路线上,因为它不会改变任何东西。
为可能遇到相同问题的其他人回答这个问题。
好的,所以用户不要慌张地建议我在有问题的控制器中仅回显“问题x”,当我这样做时,404错误消失并且回显“问题x”。所以可以肯定的是问题出在我的控制器上,而不是我的例程或.htaccess文件。
现在,此控制器的设计方式是,它在显示任何内容之前先从数据库中调用一个ID。在回显“问题x”之后,我意识到它从数据库中调用的ID的值为零。因此,毫不奇怪,从控制器的角度来看,该页面不存在!因此是404。
现在,我通过从数据库中更新该表并为ID提供一个它本来应该具有的值来修复它。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句