我已经尝试了一切,但我已经接近放弃了。请帮助。
我一直试图摆脱codeigniter中的index.php并完成了google提供的每个代码以放入.htaccess。
目前,我有这个。
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_URI} ^system.*
RewriteRule ^(.*)$ /index.php?/$1 [L]
RewriteCond %{REQUEST_URI} ^application.*
RewriteRule ^(.*)$ /index.php?/$1 [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?/$1 [L]
这确实有效,但每次我提交表格时,我都会收到这个让我疯狂的精彩302错误。
我的控制器中的一个提交功能......其他形式的其他功能基本相同。我已经尝试了刷新和重定向的定位方法,既没有改变任何东西。我不相信这是问题所在。
public function submitStory(){
if (empty($this->user)) {
redirect('/home/');
}else{
$this->story_model->writeStory();
redirect('story/newChapterView/');
}
}
我的模型只是插入数据库
public function writeStory(){
$this->title = strip_tags($this->input->post('wTitle'));
$this->date = time();
$this->author = strip_tags($this->input->post('wAuthor'));
$this->type = strip_tags($this->input->post('wType'));
$this->db->insert('story_tbl', $this);
}
我的一个表单,它们几乎只是一个标准的codeigniter表单
<?=form_open('story/submitStory', array('id' => 'newStory'));?>
<p class="textBox"><label>Story Title: </label><input id="storyTitle" type="text" name="wTitle" autocomplete="off" /></p>
<p><label>Complete:</label><select class="drop" name="wcomplete" id="complete"><option value="no">no</option><option value="yes">yes</option></select></p>
<p><label>Description: </label><textarea name="wDescription" id="wDescription" class="wDescription"></textarea><span id="discWarn">500 characters left</span></p>
<p class="submit"><input type="submit" value="Submit Details" /></p>
</form>
答案 0 :(得分:1)
最简单的一个:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [L]
</IfModule>
如果它没有帮助,那么你应该检查mod_rewrite是否已启用。
答案 1 :(得分:0)
使用此:
<IfModule mod_rewrite.c>
RewriteEngine On
#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 %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
#This last condition enables access to the images and css folders, and the robots.txt file
RewriteCond $1 !^(index\.php|public|images|robots\.txt|css)
RewriteRule ^(.*)$ index.php/$1 [L]
</IfModule>
答案 2 :(得分:0)
为您的.htaccess
文件尝试类似的内容:
RewriteEngine On
#request to index.php
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond $1 !^(index\.php|public|images|robots\.txt|css)
RewriteRule ^(.*)$ index.php?/$1 [L]
?
之后的index.php
有助于解决'No input file specified'
错误
答案 3 :(得分:0)
我在.htaccess
文件中有相同的代码,它没有任何问题。
正如您所说,它与表单提交一起发生,可能问题在于您的服务器配置。重新检查您的服务器配置。
答案 4 :(得分:0)
确保替换
$config['index_page'] = 'index.php';
...与
$config['index_page'] = '';
在所有拥有此行的行上......改为......
RewriteRule ^(.*)$ index.php?/$1 [PT, L]
答案 5 :(得分:0)
我认为这可以解决您的问题。
public function submitStory(){
if (empty($this->user)) {
redirect('/home/', 'location', 301);
}else{
$this->story_model->writeStory();
redirect('story/newChapterView/', 'location', 301);
}
}
redirect()函数看起来像这样
redirect ($url, $method = 'location', $response = 302) {...};
默认响应代码为302 。所以你必须手动更改它。
p.s。第三个参数仅适用于'location'重定向,不能'刷新'。
答案 6 :(得分:0)
打开config.php并执行以下替换
$config['index_page'] = "index.php"
to
$config['index_page'] = ""
在某些情况下,uri_protocol的默认设置无法正常运行。 只需更换 $ config ['uri_protocol'] =“自动” 通过 $ config ['uri_protocol'] =“REQUEST_URI”
htaccess的
RewriteEngine on
RewriteCond $1 !^(index\.php|resources|robots\.txt)
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [L,QSA]