【发布时间】:2019-09-01 21:35:26
【问题描述】:
我有四个相同的页面,它们仅在某些标识符上有所不同,但逻辑非常相同。它们都在本地主机上工作。其中三个页面在实时服务器上运行良好,但其中一个返回 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 的情况下运行良好。我的路线也运行良好。
我现在很迷茫。
附言。我有一个自定义的 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'] = "问题1"; 在路线中,因为它不会改变任何东西。
【问题讨论】:
-
你能写出你看不到的页面的 URL 是什么吗?你真的需要两个
.htaccess-文件吗? ... 或者它可以合并在一个 htaccess 文件中吗? This here 是一种从.htaccess文件中写入内容的方法,这在调试时可能会有所帮助。如果是我,我会检查我的代码,并尝试写<?php echo 'Does it reach this point'; die(); ?>,看看代码中的问题出在哪里。 -
我无法访问的 URL 是 assessment.com/question1 。我有一个assessment.com/question2 和assessment.com/question3,我可以毫无问题地访问它们。它们唯一的区别是变量名和几个值。我尝试结合两个 .htaccess 文件,它返回一个网站范围的错误。另外,我提供的 .htaccess 文件都是 if。逐行检查并不是很复杂。
-
尝试将整个 .htaccess 添加到您的问题中(作为底部的添加),以便我(和其他人)可以看到您尝试过的内容。
-
是否为
$route['questionX'] = 'questionX/index';之类的所有 4 个 URI 显式添加路由?日志中有任何内容吗?尝试提高config.php中的日志阈值。尝试删除所有代码并在每种方法中只执行echo "questionX";,也许问题出在代码中,而不是路由?我仍然怀疑您的Question1类或文件或方法存在某些东西,它们在某种程度上有所不同。 -
其实不是路线。我尝试添加 $route['questionX'] = 'questionX/index';在我的路线中并没有帮助。我在 Question1/index() 控制器中呼应了“questionx”,它出现了!所以,看起来是我的控制器有问题。根据您的意见,我现在正在修复它。
标签: php codeigniter