CodeIgniter и 1and1 - 404 сообщение об ошибке - PullRequest
2 голосов
/ 28 июля 2011

У меня возникла похожая проблема с сообщением об ошибке 404. Я использую CI 2.0.2, и у меня есть базовый общий хостинг с 1and1, и мой .htaccess находится в корневой директории моего сайта (/mywebsite/.htaccess), и это выглядит так

<IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteBase /

    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule ^(.*)$ index.php/$1 [L]

    AddType x-mapp-php5 .php
    AddHandler x-mapp-php5 .php
</IfModule>

<IfModule !mod_rewrite.c>
    ErrorDocument 404 index.php
</IfModule>

В моем файле config.php у меня есть следующее:

<?php
$config['base_url']    = 'http://mywebsite.com';

$config['index_page'] = '';

$config['uri_protocol']    = 'REQUEST_URI';

Неважно, что я делаю, я получаю сообщение об ошибке 404 страница не найдена: http://d.pr/F2KR

Я потратил несколько часов на поиски решения этой проблемы и не смог ее исправить.

Любые предложения, советы или фактический ответ на этот вопрос с благодарностью.

ОБНОВЛЕНИЕ 1: Я позвонил 1and1, и они сказали мне, что это должно быть проблема с index.php, так как это сообщение об ошибке 404 генерируется CodeIgniter, а не сервером. Есть ли другие значения конфигурации, на которые мне следует обратить внимание?

ОБНОВЛЕНИЕ 2: Я обнаружил, что существует проблема, чувствительная к регистру (это странно, так как localhost и сервер UNIX / LINUX соответственно), если класс контроллера называется Login, тогда путь должен быть mysite.com/Login/, он не может быть mysite .com / Войти /. Я до сих пор не уверен, как эта проблема будет решена, я не хочу переписывать несколько путей.

ОБНОВЛЕНИЕ 3 (РАЗРЕШЕНО) : Как указано в обновлении 2, проблема заключалась не в .htaccess, а в схеме именования моих моделей и контроллеров, точнее имен файлов. Очевидно, на моем Mac (dev-машине) у меня могут быть модели с именем User.php или Login.php, и я не буду иметь никакого значения, если я буду использовать верхний или нижний регистр в URL, но как только я загрузил свой код в 1and1, я продолжал получать сообщение об ошибке CI « 404 не найдено ». Мое конкретное решение этой проблемы состояло в том, чтобы изменить имена файлов всех моделей и контроллеров на строчные, как предложено в этом посте http://codeigniter.com/forums/viewthread/129013/#636849.

Ответы [ 3 ]

2 голосов
/ 28 июля 2011
RewriteEngine On
RewriteBase /

RewriteCond %{REQUEST_URI} ^system.*
RewriteRule ^(.*)$ /index.php?/$1 [L]

RewriteCond %{REQUEST_URI} ^application.*
RewriteRule ^(.*)$ /index.php?/$1 [L]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?/$1 [L]

Попробуйте изменить первый <if> для кода выше, это работает для моей настройки codeigniter.

Не уверен насчет AddType x-mapp-php5 .php AddHandler x-mapp-php5 .php ...

1 голос
/ 28 июля 2011

Я согласен с Крисом, чтобы убедиться, что у вас включен mod_rewrite, вы можете попробовать изменить страницу 404:

<IfModule !mod_rewrite.c>
    ErrorDocument 404 index.php
</IfModule>

к чему-то другому, например к фиктивной странице

<IfModule !mod_rewrite.c>
    ErrorDocument 404 my_dummy_page.html
</IfModule>

если вы начинаете ловить новую фиктивную страницу 404, это потому, что у вас не включен mod_rewrite.

0 голосов
/ 28 июля 2011

Я использую этот htaccess на моем 1and1, и мой CI2 работает нормально.Он расположен в базовой папке CI.Также убедитесь, что у вашего .htaccess есть. (Точка) в имени, обычно Windows удаляет эту точку.

Options -Indexes

DirectoryIndex index.php

AddType x-mapp-php5 .php
AddHandler x-mapp-php5 .php   

RewriteEngine on 
RewriteBase   /

RewriteCond %{HTTP_HOST} ^example\.in
RewriteRule (.*) http://www.example.in/$1 [R=301,L]
...