2016-08-15 20 views
0

codeigniterフレームワークを使用しています.htaccessファイルを設定してindex.phpを削除し、サーバー用のHTTPSプロトコルを有効にしようとしました。CodeIgniterでindex.phpを削除します。

HTTP:私がアクセスしたときに

  1. すべてが、大丈夫ですhttp://www.example.com/controller/methodまたはhttp://www.example.com/index.php/controller/method

HTTPS:

  1. すべては、私がアクセスしたときに、大丈夫ですhttps://www.example.com/index.phpの /コントローラ/メソッド

  2. ガット404私はhttps://www.example.com/controller/method

にアクセスしたとき、私はそれが.htaccessファイルの問題だと思うが見つからない、それは、HTTPSプロトコルのために働いていないのhtaccessファイルのように見えるです。

私のサイトの.htaccessファイル

DirectoryIndex index.php 
RewriteEngine on 

RewriteCond %{HTTPS} off 
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301] 

RewriteCond $1 !^(index\.php|(.*)\.swf|forums|images|css|downloads|js|robots\.txt|favicon\.ico) 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^(.*)$ ./index.php?$1 [L,QSA] 

何か問題がありますか?どうもありがとう。あなたは$の設定で(空白)「『あなたのコンフィグファイルから[BASE_URLと置く]』 $の設定を削除

+0

ファイル名の名前が大文字であることを確認してください。 – user4419336

+0

@ wolfgang1983ファイル名は正しいですが、HTTPプロトコル経由でWebサイトにアクセスするとすべて動作しますが、HTTPSプロトコル経由でWebサイトにアクセスすると動作しません.htaccessファイルはHTTPSプロトコルでは動作しません。 –

答えて

0

まず[」インデックス ']属性..

...のようなあなたの.htaccessファイルを設定し

ください。
<IfModule mod_rewrite.c> 
RewriteEngine On 

    RewriteCond %{REQUEST_FILENAME} !-f 
    RewriteCond %{REQUEST_FILENAME} !-d 

    # Rewrite all other URLs to index.php/URL 
    RewriteRule ^(.*)$ index.php?url=$1 [PT,L] 
    </IfModule> 
    <IfModule !mod_rewrite.c> 
     ErrorDocument 404 index.php 
    </IfModule> 
+0

申し訳ありませんが、httpだけで動作し、まだhttpsプロトコルでは動作しません。 –

0

私は私のプロジェクトの一つで、これを使用し、この

を試してみてください。その上記のhtaccessであなた

#AuthType Basic 
#AuthName "restricted area" 
#AuthUserFile /home/site_name/public_html/.htpasswd 
#require valid-user 

RewriteEngine On 
#RewriteBase/

RewriteCond %{SERVER_PORT} 80 
RewriteRule ^(.*)$ https://www.site_name.com/$1 [R,L] 

RewriteCond %{HTTP_HOST} ^([a-z.]+)?.site_name.lk$ [NC] 
RewriteRule ^(.*)$ https://www.site_name.com/$1 [R=301,L] 

RewriteCond %{HTTP_HOST} ^([a-z.]+)?site_name\.com$ [NC] 
RewriteCond %{HTTP_HOST} !^www\. [NC] 
RewriteRule .? https://www.%1site_name.com%{REQUEST_URI} [R=301,L] 

<IfModule mod_rewrite.c> 
    RewriteEngine on 
    RewriteCond %{REQUEST_FILENAME} !-f 
    RewriteCond %{REQUEST_FILENAME} !-d 
# RewriteCond $1 !^(index\.php|assets|files|robots\.txt) 
# RewriteRule ^(.*)$ /index.php/$1 [L] 

    RewriteRule ^(.*)$ index.php/$1 [L,QSA] 
</IfModule> 

site_nameはあなたのウェブサイトの名前に

+0

まだ動作していない=( –

0

を交換しなければならないあなたはこれを試すことができ、それは私のプロジェクトのために働くことができます月。

RewriteEngine On 
RewriteCond %{HTTPS} !=on 
RewriteRule ^/?(.*) https://%{SERVER_NAME}/$1 [R,L] 

RewriteCond $1 !^(index\.php|(.*)\.swf|forums|images|css|downloads|js|robots\.txt|favicon\.ico) 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^(.*)$ index.php/$1 [L,QSA] 

参照:https://wiki.apache.org/httpd/RewriteHTTPToHTTPS

0

注:SSL書き換えがあなたの.htaccessファイル内index.php書き換えの前に起こるはず。

この設定をしないでください(サーバーのApache設定ファイルでは何も変更しないためです)。 )

AllowOverrideのすべての

ちょうどそれが作品2設定を適用します。


私は同じ問題に直面し、

AllowOverrideの1を設定するすべての

を追加することによってそれを解決しています FYI私たちは2つの設定ファイルを持っています。

  1. (httpで実行されます)デフォルトApache設定
  2. (httpsで実行されます)SSLの設定

ゴーSSLの設定へと設定2 **

<Directory "/var/www/html"> 
    AllowOverride All 
</Directory> 

を追加します。 ** .htaccessファイルは次のようにする必要があります。

RewriteEngine On 
RewriteCond %{HTTPS} !=on  
RewriteRule^https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301] 

<IfModule mod_rewrite.c> 
    RewriteEngine on 
    RewriteCond %{REQUEST_FILENAME} !-f 
    RewriteCond %{REQUEST_FILENAME} !-d 
    RewriteRule^index.php [L] 
</IfModule> 

それは私のために働いた。

関連する問題