codeigniter 302发现错误

时间:2013-06-06 01:27:36

标签: php codeigniter http-status-code-302

我已经尝试了一切,但我已经接近放弃了。请帮助。

我一直试图摆脱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错误。

302 error

我的控制器中的一个提交功能......其他形式的其他功能基本相同。我已经尝试了刷新和重定向的定位方法,既没有改变任何东西。我不相信这是问题所在。

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:&nbsp;</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>

7 个答案:

答案 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]