CodeIgniter 2.0.2 ведет себя неправильно с .htaccess

Я использую .htaccess для перезаписи всех запросов, поступающих из backoffice.3incheslong.com, в мои контроллеры подпапок в /application/controllers/backoffice/, я использую .htaccess:

Options +FollowSymLinks -Indexes
RewriteEngine on
RewriteBase /

RewriteCond %{HTTP_HOST} ^3incheslong\.com 
RewriteRule (.*) http://www.3incheslong.com/$1 [R=301,L]

RewriteCond %{HTTP_HOST} ^backoffice\.3incheslong\.com
RewriteCond %{REQUEST_URI} !^/backoffice
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule (.*) /backoffice/$1 [L]

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

Htaccess работает, но backoffice.3incheslong.com использует /controllers/index.php вместо /controllers/backoffice/index.php

вот результат, который я получаю, используя var_export() $_SERVER на www.3incheslong.com:

array (
  'UNIQUE_ID' => 'ThbVpsCoAAwAAAKSGoYAAAAM',
  'HTTP_HOST' => 'www.3incheslong.com',
  'HTTP_USER_AGENT' => 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10.6; rv:5.0) Gecko/20100101 Firefox/5.0',
  'HTTP_ACCEPT' => 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8',
  'HTTP_ACCEPT_LANGUAGE' => 'sv-se,sv;q=0.8,en-us;q=0.5,en;q=0.3',
  'HTTP_ACCEPT_ENCODING' => 'gzip, deflate',
  'HTTP_ACCEPT_CHARSET' => 'ISO-8859-1,utf-8;q=0.7,*;q=0.7',
  'HTTP_CONNECTION' => 'keep-alive',
  'PATH' => '/opt/local/bin:/opt/local/sbin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/local/git/bin:/usr/X11/bin',
  'SERVER_SIGNATURE' => '',
  'SERVER_SOFTWARE' => 'Apache/2.2.17 (Unix) mod_ssl/2.2.17 OpenSSL/1.0.0d DAV/2 PHP/5.3.5',
  'SERVER_NAME' => 'www.3incheslong.com',
  'SERVER_ADDR' => '127.0.0.1',
  'SERVER_PORT' => '80',
  'REMOTE_ADDR' => '127.0.0.1',
  'DOCUMENT_ROOT' => '/Library/WebServer/Documents/bidpart/public_dev/',
  'SCRIPT_FILENAME' => '/Library/WebServer/Documents/bidpart/public_dev/index.php',
  'REMOTE_PORT' => '63771',
  'GATEWAY_INTERFACE' => 'CGI/1.1',
  'SERVER_PROTOCOL' => 'HTTP/1.1',
  'REQUEST_METHOD' => 'GET',
  'QUERY_STRING' => '',
  'REQUEST_URI' => '/',
  'SCRIPT_NAME' => '/index.php',
  'PHP_SELF' => '/index.php',
  'REQUEST_TIME' => 1310119334,
)

и это результат использования var_export() на backoffice.3incheslong.com:

array (
  'REDIRECT_REDIRECT_UNIQUE_ID' => 'ThbVlsCoAAwAAAKRGoMAAAAL',
  'REDIRECT_REDIRECT_STATUS' => '200',
  'REDIRECT_UNIQUE_ID' => 'ThbVlsCoAAwAAAKRGoMAAAAL',
  'REDIRECT_STATUS' => '200',
  'UNIQUE_ID' => 'ThbVlsCoAAwAAAKRGoMAAAAL',
  'HTTP_HOST' => 'backoffice.3incheslong.com',
  'HTTP_USER_AGENT' => 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10.6; rv:5.0) Gecko/20100101 Firefox/5.0',
  'HTTP_ACCEPT' => 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8',
  'HTTP_ACCEPT_LANGUAGE' => 'sv-se,sv;q=0.8,en-us;q=0.5,en;q=0.3',
  'HTTP_ACCEPT_ENCODING' => 'gzip, deflate',
  'HTTP_ACCEPT_CHARSET' => 'ISO-8859-1,utf-8;q=0.7,*;q=0.7',
  'HTTP_CONNECTION' => 'keep-alive',
  'HTTP_CACHE_CONTROL' => 'max-age=0',
  'PATH' => '/opt/local/bin:/opt/local/sbin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/local/git/bin:/usr/X11/bin',
  'SERVER_SIGNATURE' => '',
  'SERVER_SOFTWARE' => 'Apache/2.2.17 (Unix) mod_ssl/2.2.17 OpenSSL/1.0.0d DAV/2 PHP/5.3.5',
  'SERVER_NAME' => 'backoffice.3incheslong.com',
  'SERVER_ADDR' => '127.0.0.1',
  'SERVER_PORT' => '80',
  'REMOTE_ADDR' => '127.0.0.1',
  'DOCUMENT_ROOT' => '/Library/WebServer/Documents/bidpart/public_dev/',
  'SCRIPT_FILENAME' => '/Library/WebServer/Documents/bidpart/public_dev/index.php',
  'REMOTE_PORT' => '63696',
  'REDIRECT_URL' => '/backoffice/',
  'GATEWAY_INTERFACE' => 'CGI/1.1',
  'SERVER_PROTOCOL' => 'HTTP/1.1',
  'REQUEST_METHOD' => 'GET',
  'QUERY_STRING' => '',
  'REQUEST_URI' => '/',
  'SCRIPT_NAME' => '/index.php',
  'PATH_INFO' => '/backoffice/',
  'PATH_TRANSLATED' => 'redirect:/index.php/backoffice//',
  'PHP_SELF' => '/index.php/backoffice/',
  'REQUEST_TIME' => 1310119318,
)

Кажется, перенаправление работает (?), но Codeigniter каким-то образом все еще использует мой контроллер по умолчанию, а не служебный. И если я захожу на www.3incheslong.com/index.php/backoffice или www.3incheslong.com/backoffice, я получаю backoffice-controller..

есть идеи?


person Martin Ericson    schedule 08.07.2011    source источник
comment
Вы пытаетесь создать другое приложение с помощью контроллера бэк-офиса или пытаетесь расширить существующее приложение codeigniter?   -  person Sukumar    schedule 08.07.2011


Ответы (1)


Я думаю, что в строке 11(?):

RewriteRule (.*) /backoffice/$1 [L]

Вы обходите передний контроллер codeigniter, и вы можете попробовать:

RewriteRule (.*) index.php/backoffice/$1 [L]
person Edinho Almeida    schedule 13.07.2011