Цикл перенаправления CodeIgniter в подпапке на сервере - PullRequest
1 голос
/ 13 марта 2011

Я застрял с циклом перенаправления при развертывании файлов с локального хоста на моем сервере.

Firefox has detected that the server is redirecting the request for this address in a way that will never complete.

Сайт многоязычный, и я использую файл .htaccess для удаления index.php из URI. Я пытаюсь развернуть сайт в подпапке в моем домене (например, http://www.mydomain.com/subfolder), и в идеале я хочу, чтобы URL были такими (http://www.mydomain.com/subfolder/en/welcome)

)

Мой файл .htaccess:

RewriteEngine on
RewriteCond $1 !^(index\.php|images|robots\.txt)
RewriteRule ^(.*)$ index.php/$1 [L]

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

RewriteEngine on
RewriteBase /subfolder/
RewriteCond $1 !^(index\.php|images|robots\.txt)
RewriteRule ^(.*)$ index.php/$1 [L]

Мой config.php:

$config['base_url'] = 'http://www.mydomain.com/subfolder/';
$config['index_page'] = '';
$config['uri_protocol'] = 'AUTO';

Мои маршруты. Php:

$route['default_controller'] = "home";
$route['404_override'] = '';

$route['^../products/(:num)'] = "products/products_list/index/$1";
$route['^../products'] = "products/products_list/index";

$route['^../products/detail/(:num)'] = "products/product/index/$1";
$route['^../(.+)$'] = "$2";

И, наконец, класс MY_Config для i18n:

class MY_Config extends CI_Config {

function site_url($uri = '')
{    
    if (is_array($uri))
    {
        $uri = implode('/', $uri);
    }

    if (function_exists('get_instance'))        
    {
        $CI =& get_instance();
        $uri = $CI->lang->localized($uri);            
    }

    return parent::site_url($uri);
}

}

Эта установка отлично работает в моей локальной среде, я получаю доступ через http://local.subfolder.com, Я настроил виртуальный хост для этого, но эта настройка не работает, когда я развертываюсь на сервере в подпапке.

Я был бы очень рад, если бы кто-то мог указать, где проблема. Извините за длинный пост, но хотел дать столько же информации.

Заранее спасибо

Ответы [ 2 ]

1 голос
/ 13 марта 2011

Я бы попробовал удалить косую черту из RewriteBase

RewriteBase /subfolder

А также изменение вашего RewriteCond

RewriteEngine On
RewriteBase /subfolder
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?/$1 [L]

Я заметил, что использование ? до /$1 иногда работает и в CI.

Очень полезный документ: http://codeigniter.com/wiki/mod_rewrite/

0 голосов
/ 13 марта 2011

, если вы хотите использовать htaccess для определенной папки., Просто поместите свой htaccess с в эту папку. например,

, если вы используете пять виртуальных хостингов, таких как v1, v2, v3, v4, v5. И если вы хотите использовать свой htaccess в v3, просто поместите этот файл в эту папку.

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