Контроллер CI 2.0 / доступ к функциям не работает - PullRequest
0 голосов
/ 11 февраля 2011

Я создаю веб-сайт с использованием CI и хочу, чтобы URI моего веб-сайта был чистым, как

http://myweb.com/controller/function

без части index.php.

Мне удалось сделать это с CI 1.73, но я не могу заставить его работать с CI 2.0
Я установил route.php следующим образом:

$route['default_controller'] = 'home';

и config.php

$config['index_page'] = '';

Я также поместил файл .htaccess, который работал в моей пробной версии, используя CI 1.73

.
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /myweb

#Removes access to the system folder by users.
#Additionally this will allow you to create a System.php controller,
#previously this would not have been possible.
#'system' can be replaced if you have renamed your system folder.
RewriteCond %{REQUEST_URI} ^system.*
RewriteRule ^(.*)$ /index.php?/$1 [L]

#When your application folder isn't in the system folder
#This snippet prevents user access to the application folder
#Submitted by: Fabdrol
#Rename 'application' to your applications folder name.
RewriteCond %{REQUEST_URI} ^application.*
RewriteRule ^(.*)$ /index.php?/$1 [L]

#Checks to see if the user is attempting to access a valid file,
#such as an image or css document, if this isn't true it sends the
#request to index.php
RewriteCond $1 !^(index\.php|images|captcha|css|js|robots\.txt)
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ index.php?/$1 [L]
</IfModule>

есть предложения?

1 Ответ

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

Я бы сказал, что эта строка RewriteBase /myweb является виновником. Попробуйте вместо этого поставить RewriteBase /.

Кроме того, я бы попытался максимально упростить ваш .htaccess, пока вы не включите его, что-то вроде этого:

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

Обратите внимание, что я думаю, что вы должны поставить / после index.php, а не ?/, например:

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