2017-04-18 3 views
0

Htaccessを使用すると、URLからwwwを削除できますが、index.phpを完全に削除することで無限に苦労しています。WWWがURLにある場合、htaccessはindex.phpを削除しません

私はcodeigniterフレームワークを使用しており、設定ファイルを確認しました。

$config['index_page'] = ''; 
$config['base_url'] = ''; 

アイブ氏も試してみました:誰かがSO上の別の場所に提案されているよう:! でRewriteBase/ するRewriteCond%{REQUEST_FILENAME} -f のRewriteCondで
RewriteEngine:

$config['base_url'] = '/'; 

は私のhtaccessファイルは、このように見えました%{REQUEST_FILENAME}!-d RewriteRule ^(。*)$ index.php?/ $ 1 [L]

#Force non-www: 
RewriteEngine on 
RewriteCond %{HTTP_HOST} ^www\.mywebsite\.com [NC] 
RewriteRule ^(.*)$ http://mywebsite.com/$1 [L,R=301] 

アイブ氏は、モード書き換えルールを書くのすべての異なるバージョンを試してみましたこの1つは最高に動作しますが、それは現時点で

RewriteBase/
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^(.*)\?*$ index.php?/$1 [L,QSA] 

結果にURLとスラッシュ RewriteEngineに疑問符が追加されます私がwww.mywebsite.comと入力すると、それは正しいmywebsite.comに変更されます。

しかし、私はwww.mywebsite.com/someuri入力した場合、それはURLが www.mywebsite.com/?/なり、最後modrewriteルールにwww.mywebsite.com/index.php?someuri

なり後者では

# Now the CodeIgniter part 
RewriteCond $1 !^(index\.php|resources|robots\.txt) 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^(.*)$ index.php?/$1 [L,QSA] 

、私はURLにindex.phpを入力すると、それが離れて行くdoesntの:someuri

は、私は次のようにindex.phpの後に疑問符を追加してみました。

私は明らかにmod-rewriteを理解していません。誰かが正しい方向に私を導くことができますか?

+0

おそらくあなたは強制的な非wwwルールで '[L、R = 301]'を持っているからです。 'L'は最後の規則を示しますので、それ以上処理しないでください。そこから削除してみてください。私はそれが答えであるために、現時点でそれをテストすることはできません。私はApacheをインストールしたマシンではありません。 – gabe3886

+0

このhtaccessテスターは本当に便利です。[http://htaccess.madewithlove.be/](http://htaccess.madewithlove.be/) – DFriend

+0

私は[L]を削除しましたが、結果は同じです。 – Ask

答えて

0

オープンconfig.phpファイルを試してみて、次の操作を行うには、

$config['index_page'] = "" 

にいくつかのケースではuri_protocolのデフォルト設定が正常に動作しない

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

を置き換えます。ただ、次 オープン設定を試してみてください

$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] 
+1

また、 '$ config ['base_url']' **は設定する必要があります**。例えば'$ config ['base_url'] = 'http://mywebsite.com/'(末尾にスラッシュを入れてください) – DFriend

+0

ありがとうございました。できます。しかし、私は追加します。 wwwのURLにindex.php?登場する。また、手動でindex.phpをURLに挿入しても、それが残っていれば削除されません。 – Ask

+1

Codeigniter 3バージョンにはuri_protocolのAUTOがありません – user4419336

0

によって

$config['uri_protocol'] ="AUTO" 

を交換してください。PHPと以下のんは

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

設定BASE_URL

$config['base_url'] = ''; 

$ark_root   = "http://".$_SERVER['HTTP_HOST']; 
$ark_root   .= str_replace(basename($_SERVER['SCRIPT_NAME']),"", $_SERVER['SCRIPT_NAME']); 
$config['base_url'] = $ark_root; 

への.htaccess

$config['index_page'] = ''; 

を置き換えます

RewriteEngine on 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule .* index.php?/$0 [PT,L] 
関連する問題