CodeIgniter Mod_Rewrite Issue - URL-адрес показывает только индекс - PullRequest
1 голос
/ 25 января 2011

У меня есть приложение CI, которое после переключения серверов, похоже, не маршрутизируется правильно.

В моем конфиге у меня есть

$config['uri_protocol'] = "PATH_INFO";
$config['enable_query_strings'] = TRUE;

Это должно разрешать как параметры строки запроса, так и сегменты URL.

Итак, теоретически это должно работать (как на старом сервере):

http://www.domain.com/register?param=something

Однако, независимо от того, по какому URL-адресу я перехожу, он показывает только индекс.

Так что, если я пойду к http://www.domain.com/register

Это показывает это в адресной строке, однако он не получает контроллер регистра, он показывает индекс.

Если я изменю 'uri_protocol' на REQUEST_URI, это сработает. Но тогда параметры строки запроса не будут.

Мой .htaccess -

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

RewriteCond %{QUERY_STRING} .
RewriteRule ^$ /? [L]  

Есть идеи, в чем может быть проблема? Как я уже сказал, он работает на другом сервере. Итак, я думаю, что-то делать с Apache, возможно?

Большое спасибо!

Ответы [ 2 ]

2 голосов
/ 25 января 2011

Полагаю, RewriteCond $1 никогда не оценивается как true, и перенаправление не происходит.

На самом деле вы можете уменьшить эти две строки до одной:

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d

Достаточнозапись

RewriteCond %{REQUEST_FILENAME} !-f

Поскольку тест -f проверяет каталоги и .Если это по-прежнему не дает ожидаемых результатов, проверьте PATH_INFO и ORIG_PATH_INFO в $_SERVER, если они действительно присутствуют.

0 голосов
/ 25 января 2011

Попробуйте удалить ./ перед index.php

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

На самом деле вы сможете обойтись только с этими строками

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

Если у вас есть codeigniterдиректории, вам может понадобиться добавить директиву rewrite base в зависимости от настроек вашего сервера.

RewriteBase /directory/
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...