首先,我对codeigniter非常熟悉,我已经多次使用它了。现在我有一个项目也为学校做了,我在服务器上安装了codeigniter,但我相信我遇到了路由问题。
关于服务器的其他信息与我使用的正常环境不同,服务器使用SSH,在我看来它非常奇怪。您还需要用户名和密码才能查看URL。 (我认为这很奇怪)
如果这有助于网址: https://clipper.encs.concordia.ca/~pyc353_2/ 和凭据是(用户名:pyc353_2,密码:FMaqRb)
现在我能够在路由中看到我设置为'default_controller'的任何页面,但问题是尝试转到任何其他页面。现在我正在尝试访问寄存器控制器,我只是得到了404(如果我将其设置为默认值,它可以工作)
我将链接我认为可能与错误相关的所有代码,希望它不是服务器设置,因为我无法控制任何更改。
的config.php
$config['base_url'] = 'https://clipper.encs.concordia.ca/~pyc353_2/';
$config['index_page'] = '';
$config['uri_protocol'] = 'AUTO';
routes.php文件
$route['default_controller'] = "test";
.htaccess(可能有更好的代码来执行此操作,但我过去使用它没有问题,即使我删除htaccess并将index.php添加回'index_page',路由也不起作用)
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule .* index.php/$0 [PT,L]
</IfModule>
所以我尝试在网址中访问我的页面不同变体,例如:(stackoverflow不会让我发布超过2个物理链接)
clipper.encs.concordia.ca/~pyc353_2/register
clipper.encs.concordia.ca/~pyc353_2/index.php/register
虽然使用/index.php/但是没有工作,但错误信息是:“没有指定输入文件。”
所以我希望我的解释足够清楚,很难解释一些我不理解源问题的东西。如果您需要任何其他信息,请随时询问。我真的需要解决这个问题才能完成我的项目。
修改
我不知道这是否相关,但404消息甚至不是在codeigniter样式,它只是看起来像一个普通的网页404
此外,我正在查看服务器上的路径,这是层次结构:/ www / groups / p / py_comp353_2我不知道这是否会影响任何内容?
NEWER EDIT
按照我在此处找到的内容:http://ellislab.com/codeigniter/user-guide/installation/troubleshooting.html
将index.php更改为index.php? (并删除htaccess)实际上确实使路由工作。现在我对此感到高兴,我可以继续工作,但由于这是一个难看的解决方案,任何人都知道如何保持路由工作并删除index.php?来自我的URI?
答案 0 :(得分:0)
您的htaccess似乎无法正常工作。
要确认,请创建一个新的PHP文件并写下以下行:
echo phpinfo();
在该页面上尝试搜索“mod_rewrite”,如果已启用,您将在“已加载的模块”下看到它
很可能,它没有启用。
在您的服务器上试试这个:
a2enmod enable
然后重启apache服务器。
要在debian上重新启动,这应该可行:
service apache2 restart
对于CentOS,这应该有效:
apachectl restart
这总是无法解决问题。
即使这样,也可以在正常模式下尝试CI安装。 (一切都处于正常模式:htaccess和以前一样,而URL中没有index.php)
如果它不起作用,您可能需要更改apache配置文件httpd.conf
尝试搜索此行:
#LoadModule rewrite_module modules/mod_rewrite.so
删除#符号
取消注释重启Apache服务器。
再次测试它。
你可以做其他事情来启用mod_rewrite。