5

私はすべてを試しましたが、あきらめようとしています。助けてください。

私はcodeigniterでindex.phpを取り除こうとしてきました.htaccessに入れるためにGoogleが提供したすべてのコードを実行しました.

現在、私はこれを持っています。

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 エラー

コントローラーの送信機能の1つ...他のフォームは基本的に同じです。私はすでに更新とリダイレクトの場所の方法を試しましたが、どちらも何も変更しません。これが問題だとは思いません。

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);
}

私のフォームの 1 つで、ほとんど標準のコードイグナイター フォームです。

<?=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>
4

7 に答える 7

1

最も単純なもの:

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

それでも問題が解決しない場合は、mod_rewrite が有効になっていることを確認してください。

于 2013-06-06T15:49:49.070 に答える
0

ファイルに同じコードがあり、.htaccess問題なく動作します。

フォーム送信で発生すると言っているように、おそらく問題はサーバー構成にあります。サーバー構成を再確認してください。

于 2013-06-09T19:01:22.410 に答える
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>
于 2013-06-06T01:29:28.640 に答える
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です。そのため、手動で変更する必要があります。

ps 3 番目のパラメーターは、 'refresh' ではなく、 'location'リダイレクトでのみ使用できます。

于 2013-06-14T12:37:41.817 に答える
0

config.php を開き、次の置換を行います

$config['index_page'] = "index.php"
to
$config['index_page'] = ""

uri_protocol のデフォルト設定が正しく機能しない場合があります。$config['uri_protocol'] ="AUTO" を $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] 
于 2013-06-15T12:50:16.687 に答える
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'

于 2013-06-09T04:06:28.863 に答える
0

必ず交換してください

$config['index_page'] = 'index.php';

と....

$config['index_page'] = '';

そして、この行を持つすべての行で....に変更...

RewriteRule ^(.*)$ index.php?/$1 [PT, L]
于 2013-06-14T08:11:38.273 に答える