我的linux服务器中的CI项目有问题(windows wamp中没有问题), 在我的项目中,除了主页面(地址http://example.com没有任何查询字符串)之外,每个路由都能正常工作,这显示404错误。 在这里我的配置: htaccess:
DirectoryIndex index.php
RewriteEngine on
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ ./index.php/$1 [L,QSA]
Options -Indexes
php_flag output_buffering On
我的routes.php:
$route['default_controller'] = 'index';
$route['404_override'] = '';
$route['translate_uri_dashes'] = FALSE;
$route['index'] = 'index/index';
$route['/'] = 'index/index'; // i have controller index.php and action index for first page that load with address example.com/index/index
我的config.php:
$config['base_url'] = 'http://example.com';
$config['index_page'] = '';
$config['uri_protocol'] = 'AUTO'; //and "REQUEST_URI" both tested.
任何帮助都会得到满足。
答案 0 :(得分:1)
“它适用于Windows但不适用于Linux”的问题几乎总是由于文件命名不正确。看来你的'default_controller'类被命名为“index”。文件名和类声明都必须使用大写的第一个字符。
换句话说,文件必须是 Index.php (注意大写我),声明必须是
<form action="" method="post" id="myForm">
<span>Name</span>
<br>
<input id="name-text" type="text" name="name">
<br>
<span>Email</span>
<br>
<input id="email-text" type="text" name="email">
<br>
<span>Subject</span>
<br>
<input id="subject-text" type="text" name="subject">
<br>
<input id="antispam-text" type="text" name="url" style="display:none;">
<span>Message</span>
<br>
<textarea id="message-text" name="message"></textarea>
<br>
<div class="form-submit">
<input id="submit-button" class="menu" type="submit" value="Submit">
</div>
<br>
<div class="form-submit">
<span id="sent-status"></span>
</div>
</form>
再次注意索引中的大写“I”。
所有这一切,CodeIgniter documentation明确指出控制器应 NOT 命名为索引。 所以,选择一些其他名称。