2016-06-19 6 views
0

私はCodeigniterとMVCが比較的新しいです。しかし、2つのアプリ「Locally」を成功裏に作成しました。探索中に、URLから「Index.php」を削除する方法とカスタムルートについても調べました。私が持っている.htaccessファイルは、ローカルでcharmのように動作しますが、ホストしようとしています。発行している505 内部サーバーの問題.htaccess issue | Codeigniter

ここで私が持っている最初の.htaccessコード(ローカル作品)である: - 私は、コードを使用すると

<IfModule mod_rewrite.c> 
# Turn on URL rewriting 
RewriteEngine On 

# If your website begins from a folder e.g localhost/my_project then 
# you have to change it to: RewriteBase /my_project/ 
# If your site begins from the root e.g. example.local/ then 
# let it as it is 
RewriteBase/

# Protect application and system files from being viewed when the index.php is missing 
RewriteCond $1 ^(application|system|private|logs) 

# Rewrite to index.php/access_denied/URL 
RewriteRule ^(.*)$ index.php/access_denied/$1 [PT,L] 

# Allow these directories and files to be displayed directly: 
RewriteCond $1 ^(index\.php|robots\.txt|favicon\.ico|public|assets|css|js|images) 

# No rewriting 
RewriteRule ^(.*)$ - [PT,L] 

# Rewrite to index.php/URL 
RewriteRule ^(.*)$ index.php/$1 [PT,L] 
</IfModule> 

上記のエラーがありますが。そして、アプリケーションは.htaccessが削除されたときにのみ動作します。 (私は不便な長いURLを使用する必要があります)

簡単な調査と成功しなかった別の.htaccessを使用した後、私はホスティングされたCIアプリケーションを正常に実行している私の友人の1人に尋ねました。彼は私に着陸ページを何の問題もなく導くファイルを私に送る。しかし、ルーティングを使用して/使用しないであらゆる機能を呼び出すことはできません。カスタムルーティングされたUR1(www.mySite.com/contact)を使用すると、実際のURLスキーム(www.mySite.com/welcome/contact_page)と同じランディングページに移動します。

新しいコードここに: -

<IfModule mod_rewrite.c> 
    RewriteEngine On 
    # !IMPORTANT! Set your RewriteBase here and don't forget trailing and leading 
    # slashes. 
    # If your page resides at 
    # http://www.example.com/mypage/test1 
    # then use 
    # RewriteBase /mypage/test1/ 
    RewriteBase/
    RewriteCond %{REQUEST_FILENAME} !-f 
    RewriteCond %{REQUEST_FILENAME} !-d 
    RewriteRule ^(.*)$ index.php?/$1 [L] 
</IfModule> 

<IfModule !mod_rewrite.c> 

    ErrorDocument 404 /index.php 
</IfModule> 

このコードを使用すると、私のランディングページを示していますが、私はそこからさらにいずれかを移動することはできません。関数を呼び出そうとすると、ランディングページがリロードされます。これは、私は最後のエラーが原因であると考えています。コード処理(ErrorDocument 404 /index.php

解決策が何であるか知っていますか?ホストされたとき

質問

  • なぜ最初の.htaccessコードの仕事をdoesntの?
  • 2番目に利用可能な.htaccessファイルの問題は何ですか?
  • あなたはもっと良い.htaccessファイルを持っていますか?はいの場合は、ここに投稿できますか?
+0

あなたのCIのどのバージョンを使用していますか? CI3を使用している場合、ファイル名とクラス名には大文字の最初の文字のみが含まれていることを確認してください。 – user4419336

+0

私は2を使用しています。クラス名の最初の文字は大文字です! –

+0

エラーメッセージと[状態コード](https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.5.6)を読むと、httpプロトコルバージョンで何かが間違ってしまう可能性があります。それもチェックしてください。 – Tpojka

答えて

0

application/config/config.php

$config['base_url'] = 'http://stackoverflow.com/'; 
$config['index_page'] = ''; # Should be empty 
ではこの .htaccessCodeIgniterのはを推奨)

RewriteEngine on 
RewriteCond $1 !^(index\.php|assets|image|resources|robots\.txt) 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^(.*)$ index.php?/$1 [L,QSA] 

または

RewriteEngine on 
RewriteCond $1 !^(index\.php|resources|robots\.txt) 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^(.*)$ index.php/$1 [L,QSA] 

をお試しください


そして、必ずコントローラの名前を作るには、モデル名が適切な方法です。 Bcz Linuxホストは大文字と小文字を区別します。

+0

こんにちは、ありがとうございました。私はこれらのすべてのステップを完了しました –

+0

@RohitNair何が起こるのですか? –

+0

何もありません!それはまだ同じです!私はこれらすべてのステップをそれ以前にやっていました –

関連する問題