1

だから私は .htaccess で遊んで、私のコードイグナイターアプリできれいな URL を持っています。

要するに、私はしようとしています:

1) URL の index.php を削除します (リダイレクトは永続的です)。

http://localhost/directory/index.php*
to
http://localhost/directory/*

http://my.domain.com/index.php*
to
http://my.domain.com/*

2)特定のコントローラーのリクエストを index.php/[controller_name] に書き換えます。

http://localhost/directory/controller1* 
to 
http://localhost/directory/index.php/controller1*

http://my.domain.com/controller2* 
to 
http://my.domain.com/index.php/controller2*

私のhtaccessファイルは現在次のようになっています:

Options +FollowSymlinks

RewriteEngine On
#RewriteBase /

# Redirect index.php 
RewriteCond %{THE_REQUEST} ^GET.*index\.php [NC]
RewriteCond %{THE_REQUEST} !/system/.*
RewriteRule ^(.*)index\.php((/)(.*))?$ /$1/$4 [R=301,L]

創刊号

これは では機能しませんhttp://localhost/dir/index.php/controller1。にリダイレクトする代わりにhttp://localhost/dir/controller1、にリダイレクトしますhttp://localhost//controller1($1空の文字列を返しますか?)

# Rewrite CI certain controllers
RewriteCond %{THE_REQUEST} directory/(home|other_controller) [NC]
RewriteRule ^(.*)(home|other_controller)(.*)$ /$1index.php/$2$3 [NC,L]

第二号

http://localhost/dir/homeこれは、内部サーバー エラー (リダイレクトが多すぎる)を与える場合には機能しません。しかし、追加されたコードをテストR=301すると、正常にリダイレクトされhttp://localhost/dir/index.php/homeます。しかし、これはリダイレクトするつもりはありません。書き直すだけで済みます。

お知らせ下さい.. :)

4

1 に答える 1

1

これで試してください:

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

これは、ブートストラップファイル(index.php)があるディレクトリに配置できます。

FastCGIを実装している場合は、書き換えルールに疑問符を追加する必要があります。

RewriteEngine On 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^(.*)$ index.php?/$1 [L]
于 2012-12-03T09:24:21.753 に答える