Массив $ _GET пуст - PullRequest
       7

Массив $ _GET пуст

4 голосов
/ 11 февраля 2011

В моем приложении Kohana 3 используется немало параметров $ _GET.Однако, когда я развернул приложение, я получил пустую страницу с текстом «Входной файл не указан».Я быстро нашел решение этой, казалось бы, распространенной проблемы, изменив свой файл .htaccess:

RewriteRule .* index.php/$0 [PT,L]

на

RewriteRule .* index.php?$0 [PT,L]

Однако теперь мой массив $ _GET потерял все переданные параметры.Любая страница, которая не требует $ _GET, работает нормально.Я не слишком хорошо разбираюсь в файлах .htaccess, но что я могу сказать, добавив?заменил массив $ _GET на uri.

Я также пробовал

RewriteRule .* index.php/?$0 [PT,L]

и

RewriteRule .* index.php?/$0 [PT,L]

, но безрезультатно.

Ниже мой файл .htaccess полностью (в основном такой же, как example.htaccess)

# Turn on URL rewriting
RewriteEngine On

# Installation directory
RewriteBase /

# Protect hidden files from being viewed
<Files .*>
    Order Deny,Allow
    Deny From All
</Files>

# Protect application and system files from being viewed
RewriteRule ^(?:application|modules|system)\b.* index.php/$0 [F,L]

# Allow any files or directories that exist to be displayed directly
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d

# Rewrite all other URLs to index.php/URL
RewriteRule .* index.php?$0 [PT,L]

Наиболее близким решением, которое я нашел, был этот пост: http://forum.kohanaframework.org/discussion/comment/4857/#Comment_4857 Однако, похоже, чтобыть для более старой версии Kohana, и я не уверен, как это будет работать в Kohana v3.

Ответы [ 3 ]

6 голосов
/ 11 февраля 2011

Использование QSA (Query String Append) должно помочь:

RewriteRule .* index.php?$0 [PT,L, QSA]
3 голосов
/ 11 февраля 2011

Мне нужно сделать два изменения в примере K03 example.htaccess, чтобы заставить его работать:

RewriteRule ^(application|modules|system)/ - [F,L] вместо

RewriteRule ^(?:application|modules|system)\b - [F,L] (который выдает внутреннюю ошибку сервера)

RewriteRule .* index.php [L] вместо

RewriteRule .* index.php/$0 [PT] (что дает сообщение с указанием Нет входного файла.)

Вот мой файл .htaccess для K03:

# Turn on URL rewriting
RewriteEngine On

# Installation directory
#RewriteBase /

# Protect hidden files from being viewed

    Order Deny,Allow
    Deny From All

# Protect application and system files from being viewed
RewriteRule ^(application|modules|system)/ - [F,L]

# Allow any files or directories that exist to be displayed directly
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d

# Rewrite all other URLs to index.php/URL
RewriteRule .* index.php [L]
0 голосов
/ 31 января 2013

Получилась точно такая же ошибка, которая, как мне кажется, вызвана тем, что мой apache работает в режиме fastcgi.У меня сработало любое из указанных выше решений с правилами htaccess, но при поиске в Интернете я нахожу это правило:

RewriteRule .* index.php?kohana_uri=$0 [PT,L,QSA]

и просто заменяю его старым: RewriteRule .* index.php/$0 [PT,L]

...