Формы сломаны в CodeIgniter - PullRequest
       19

Формы сломаны в CodeIgniter

0 голосов
/ 15 сентября 2011

Я пытаюсь переписать свои URL для перехода из / controller / method в index.php? / Controller / method, и это в основном работает, за исключением того, что формы не будут отправлены правильно.У меня настроена маршрутизация, но формы также разбиваются на не перенаправленные URL-адреса.Вот небольшой контекст.

Я переместил свой index.php в отдельную веб-папку, которая является корневым веб-каталогом, поэтому нет возможности раскрыть файлы приложения.Я не уверен, что это может привести к этой проблеме, но это немного необычно в моей установке.Моя структура каталогов выглядит следующим образом:

+ codeigniter/
  + application/
    - models, views, etc
  + system/
  + web/
    - .htaccess
    - index.php
    - css, javascript, images, etc

Мой .htaccess довольно прост:

<IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteBase /

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

Кажется, что он хорошо работает на XAMPP для Windows, но он не работает на базовой Ubuntu LAMPстек.Когда я отправляю форму, ничего не происходит.Страница, которую форма направляет на загрузку, но как если бы форма не была отправлена.

Извините, еще одна важная информация: если я оставлю там index.php, то URL будут выглядеть так:/index.php/contacts/edit/1, это работает.

Дайте мне знать, могу ли я предоставить дополнительную информацию.Спасибо!

1 Ответ

0 голосов
/ 15 сентября 2011

Оказалось, что часть .htaccess, которую я не включил, приводила к тому, что ошибку было трудно найти.

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

Я предполагал, что это покажет страницу ошибки CodeIgniter, если он достигнет этого блока, но оказывается (я предполагаю), что CodeIgniter доблестно пытался спасти ситуацию, глядя на путь в $_SERVER, откуда был в состоянии получить страницу, которую он должен был отобразить. Однако, поскольку путь не существовал, ни один из данных $ _POST не прошел его. В журнале ошибок я видел эту строку:

[error] File does not exist: /path/to/web/contacts/edit/1

Включение mod_rewrite решило проблему.

...