1

を使用して CodeIgniter URI から index.php を簡単に削除できることを私は知っていRewriteRule ^(.*)$ index.php/$1 [L]ます。この問題は、.htaccess ファイル内の他のいくつかのルールの結果として発生しています。

私の問題は、ユーザーが www.mydomain.com/blog にアクセスすると、mydomain.com/index.php/blog にリダイレクトされることです。これは、末尾にスラッシュがある場合には発生しません。www.mydomain.com/blog/ が mydomain.com/blog に正しくリダイレ​​クトされます。私は本当にindex.phpがそこにあることを望んでいません。追加の補足事項として、理想的には、ユーザーが URL に index.php を入力する必要がある場合は、ない URL にアクセスしてもらいたいと考えています。

私の現在の .htaccess ファイルは次のとおりです。

RewriteEngine on
RewriteBase /

# Protect CI system folders
RewriteCond %{REQUEST_URI} ^/(application|system)/(.*)$
RewriteRule ^(.*)$ index.php/$1 [L]

# Prevent rewriting URIs that exist: (-d directory -f files)
RewriteCond %{SCRIPT_FILENAME} !-d
RewriteCond %{SCRIPT_FILENAME} !-f

# Remove index.php
RewriteRule ^(.*)$ index.php/$1 [L] 

# Remove www.
RewriteCond %{HTTP_HOST} !^mydomain.com$ [NC]
RewriteRule ^(.*)$  http://mydomain.com/$1 [R=301,L]

# Remove trailing slash
RewriteRule ^(.+)/$ http://mydomain.com/$1 [R=301,L]

私は .htaccess ファイルを調整することに比較的慣れていません。最適化や悪い習慣などのために調整できるものがあれば教えてください。これの大部分は、Google をさまよって作成されたものです。

どうもありがとう。

4

1 に答える 1

1

The order of your rules matters. Try moving RewriteRule ^(.*)$ index.php/$1 [L] to the bottom. Remember to also set the $config['index_file'] in your application/config/config.php

于 2012-07-05T18:36:46.480 に答える