我不知道是否因为我已经写过的$ routes []配置或任何因为简单地在服务器中放置CI而导致欢迎信息正常。这甚至不是.htaccess我导致删除htaccess也导致404任何请求。 我在app文件夹和系统文件夹中有.htaccess
RewriteEngine On
RewriteBase /
RewriteCond $1 ^(application|system|private|logs)
RewriteRule ^(.*)$ index.php/access_denied/$1 [L]
RewriteCond $1 ^(index\.php|robots\.txt|favicon\.ico|public|assets|resources|css|js|images)
RewriteRule ^(.*)$ - [L]
RewriteRule ^(.*)$ index.php/$1 [L]
根目录中的.htaccess重定向维护索引并允许当前开发文件夹:
RewriteEngine On
RewriteCond %{REQUEST_URI} !(index.php|x-folder|ci2) [NC]
RewriteRule ^ /index.php [L]
我的route.php看起来像这样:
$route['default_controller'] = 'site/home';
$route['404_override'] = '';
/********** *********************Admin routes****************/
$route['admin']='admin/user/login/' ;
$route['admin/home']='admin/home' ;
$route['admin/gallery']='admin/home/gallery' ;
$route['admin/calendar']='admin/home/calendar' ;
在配置中,我已将重要配置更改为:
$config['base_url']= 'http://example.com.bd/';
$config['index_page'] = '';
仅供参考:我在localhost中的应用程序运行正常。 我在EC2(亚马逊)上当前的php版本是5.2.3 - 哪个codeigniter优雅地支持和mysql> 5.5
我真的被困了任何人都可以让我离开这个地狱!?
答案 0 :(得分:1)
正如Sean默认提到的那样,EC2将AllowOverride设置为None,禁止你的.htaccess运行。我是AMI机器,以下是我从终端开始工作的步骤。
<Directory "/var/www/html">
希望它有所帮助。
答案 1 :(得分:0)
似乎答案应该是删除配置中的尾随“/”,如
$route['default_controller'] = 'site/home';
并将默认控制器重命名为home.php
我猜htaccess似乎是正确的。应该工作。
删除路由的url值中的所有尾部斜杠。例如$ route ['admin']在登录后有一个斜杠,如“login /”。仅在传递了get变量时才使用它们。例如,
$route['view-page/(:num)'] = "admin/admin/view_page/$1";
您可以将此变量设为
public function view_page(page_number){
// your super code goes here!
}
这是你想要面对的问题。
# .htaccess main domain to subdirectory redirect
# Do not change this line.
RewriteEngine on
# Change yourdomain.com to be your main domain.
RewriteCond %{HTTP_HOST} ^(www.)?yourdomain.com$
# Change 'x-folder' to be the directory your codeigniter is residing.
RewriteCond %{REQUEST_URI} !^/x-folder/
# Don't change the following two lines.
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
# Change 'x-folder' to be the directory your codeigniter is residing.
RewriteRule ^(.*)$ /x-folder/$1
# Change yourdomain.com to be your domain again.
# Change 'x-folder' to be the directory you will use for your main domain
# followed by / then the main file for your site, Ive used index.php.
RewriteCond %{HTTP_HOST} ^(www.)?yourdomain.com$
RewriteRule ^(/)?$ x-folder/index.php [L]
把它放在位于/ var / www / html的.htaccess中..让我们试一试
答案 2 :(得分:0)
默认情况下,EC2上的AMI实例将在httpd.conf中的AllowOverride None
内设置<Directory "/var/www/html"></Directory>
。如果将其更改为AllowOverride All
,则允许Apache在CodeIgniter目录中使用.htaccess文件。