Озадачен использованием codeigniter на сервере общего хостинга - PullRequest
4 голосов
/ 30 сентября 2011

Это новый для меня. Я переношу сайт, созданный в codeigniter, на сервер общего хостинга Godaddy. Я могу попасть на домашнюю страницу с:

http://www.example.com

Но когда я пытаюсь перейти на другие страницы, такие как:

http://www.example.com/about-us/

Это выдает мне это сообщение об ошибке:

Не найдено

Запрошенный URL /example/index.php/about-us/ не найден на этом сервере.

Кроме того, при попытке использовать ErrorDocument для обработки запроса возникла ошибка 404 Not Found.

Если я использую:

http://www.example.com/index.php/about-us/

Страница выглядит ясной, как день.

Я искал обходной путь CI, но мой сайт больше статических страниц, чем динамических страниц.

В целом, мой вопрос: что я делаю неправильно, и имеет ли это какое-либо отношение к наличию учетной записи Godaddy Shared Hosting?

.htaccess

RewriteEngine on
RewriteCond $1 !^(index\.php|images|robots\.txt)
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [L,QSA]

Файл конфигурации CI

$config['base_url'] = '';
$config['index_page'] = '';
$config['uri_protocol'] = 'QUERY_STRING';

Файл автозагрузки CI

$autoload['helper'] = array('url');

09-30-2011 Обновление:

В .htaccess использовать:

# Options
Options -Multiviews
Options +FollowSymLinks

#Enable mod rewrite
RewriteEngine On
#the location of the root of your site
#if writing for subdirectories, you would enter /subdirectory
RewriteBase /

#Removes access to CodeIgniter system folder by users.
#Additionally this will allow you to create a System.php controller,
#previously this would not have been possible.
#'system' can be replaced if you have renamed your system folder.
RewriteCond %{REQUEST_URI} ^system.*
RewriteRule ^(.*)$ /index.php?/$1 [L]

#Checks to see if the user is attempting to access a valid file,
#such as an image or css document, if this isn't true it sends the
#request to index.php
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d

#This last condition enables access to the images and css
#folders, and the robots.txt file
RewriteCond $1 !^(index\.php|images|robots\.txt|css)

RewriteRule ^(.*)$ index.php?/$1 [L]  

В конфигурационном файле CI:

$config['index_page'] = ""; 
$config['uri_protocol'] = "AUTO"; 

Источник: codeigniter.com / wiki / Godaddy_Installaton_Tips

Ответы [ 3 ]

4 голосов
/ 07 марта 2013

Ваш обновленный .htaccess прав.вам нужно небольшое изменение в этом.измените нижнюю строку в вашем .htaccess файле:

 RewriteRule ^(.*)$ index.php?/$1 [L,QSA]

и в вашем config.php

$config['uri_protocol'] = 'QUERY_STRING';
4 голосов
/ 30 сентября 2011

Это проблема .htaccess.Попробуйте изменить файл .htaccess на:

RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /index.php?$1 [L]
1 голос
/ 10 июля 2012

Это не хорошее решение, но та же ошибка на моем локальном хосте WAMP ...

У меня было простое исправление, которое начало происходить после того, как я обновил свой сервер WAMP.Он настроил новую конфигурацию apache и отключил rewrite_module.

Чтобы исправить, я просто щелкнул левой кнопкой мыши по значку wamperver-> Apache-> Apache Modules-> rewrite_module и удостоверился, что установлен флажок.*

...