Сайт Codeigniter, реплицированный в подкаталоге, не отображает отдельные страницы

Мы только что скопировали веб-сайт Codeigniter (из нашего корневого домена) в подкаталог того же корневого домена (со всеми внесенными изменениями в config.php, новой базой данных и т. д.). Однако ссылки на страницы не отображают отдельные страницы, а браузер просто перезагружает содержимое страницы index.php (как если бы он загружал новую страницу) и изменяет URL-адрес в окне браузера на правильную страницу.

Это действительно странно, и я провел несколько часов, изучая это, поэтому я надеюсь, что кто-то здесь сможет дать мне отправную точку для поиска.

К вашему сведению, .htaccess в подкаталоге:

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


person JoeW    schedule 04.06.2012    source источник
comment
Вы скопировали .htaccess? помни его скрытое   -  person Nicolás Torres    schedule 05.06.2012
comment
Да, все то же самое - я отредактировал свой исходный пост с его содержимым.   -  person JoeW    schedule 05.06.2012


Ответы (2)


если теперь в подкаталоге, который раньше был в корне, установлен новый codeigniter, вам нужно указать имя подкаталога перед частями index.php вашего htaccess.

примерно так (изменение в последней строке):

RewriteEngine on

RewriteRule ^$ /dev/index.php [L]
RewriteCond $1 !^(index\.php|images|css|js|robots\.txt|favicon\.ico|zip\.php|resources)
RewriteRule ^(.*)$ /dev/index.php?/$1 [L]

dev следует изменить на имя вашего подкаталога. Кроме того, если ни то, ни другое не работает, и у вас есть htaccess в корневом каталоге, это может повлиять на этот подкаталог.

person Rooster    schedule 05.06.2012
comment
К сожалению, никаких изменений, несмотря на очистку кеша, перевод нашего сайта в режим разработки на Cloudflare и запуск нового сеанса браузера с очищенным кешем. Это так странно. URL-адрес страницы изменится на то, что должен быть в строке URL-адреса браузера, но содержимое останется просто как индексный файл. - person JoeW; 05.06.2012
comment
хм. теперь, когда я присмотрюсь, для чего нужна эта часть test.php? Я редактирую свой ответ, чтобы включить стандартный набор правил перезаписи, который работает для меня. Вы могли бы попробовать это. мне немного сложно читать без разрывов строк. - person Rooster; 05.06.2012
comment
По какой-то причине это не позволило мне добавить разрывы строк здесь. ‹редактировать - мне удалось узнать как, смотрите первый пост›. test.php — это простой файл для определения того, действительно ли работает mod_rewrite... что это так. - person JoeW; 05.06.2012
comment
да, вставка кода иногда раздражает, когда он состоит из нескольких строк. проще просто написать в теге кода, чем использовать ctrl+k - person Rooster; 05.06.2012
comment
Файл .htaccess один и тот же в двух других установках некоторое время назад - я действительно не понимаю, в чем проблема на этот раз. Эй! - person JoeW; 05.06.2012

Теперь это отсортировано после множества разных попыток!

Файл config.php в root -> application -> config (строка 46) изначально был:
$config['uri_protocol'] = ($_SERVER['SERVER_ADDR'] == '127.0.0.1') ? 'AUTO' : 'ORIG_PATH_INFO';

Должно быть:
$config['uri_protocol'] = ($_SERVER['SERVER_ADDR'] == '127.0.0.1') ? 'AUTO' : 'PATH_INFO';

Все теперь работает корректно.

person JoeW    schedule 07.06.2012