1

例:

- index.php
- /system
- /application
   - /controller
      - test.php (class:test ; function index() ; echo "hi")
- /public
   - style.css

ブラウザでhttp://mysite.com/にアクセスすると、「こんにちは」と表示されます

style.css が必要な場合は、http://mysite.com/public/style.css を指定する必要があります

しかし、私はhttp://mysite.com/style.cssがstyle.cssも表示できることを指摘したい

システムとアプリケーションの前に index.php を public add prefix ../ に移動しようとしました

また、ルート ディレクトリに htaccess をセットアップすると、style.css に対してhttp://mysite.com/style.cssを正常にポイントできます。

しかし、別の問題があります。テスト コントローラーを参照できなくなり、エラー 404 が表示されます。

両方の URL を保持するにはどうすればよいですか?

アップデート:

ルート ディレクトリの htaccess:

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

RewriteRule ^public/.+$ - [L]

RewriteCond %{DOCUMENT_ROOT}/public/$0 -f
RewriteRule ^.+$ /public/$0 [L]

RewriteCond $1 !^(index\.php|images|robots\.txt)
RewriteRule ^(.*)$ index.php/$1 [L]

http://mysite.com/style.cssにアクセスすると、style.css が表示されます

しかし、コントローラーのテストが機能しない場合は、http://mysite.com/test/test/index show 404 not "hi"にアクセスしてください。

4

1 に答える 1

1

RewriteCond要求されたファイルが公開ディレクトリからのものであるかどうかをテストできます

# prevent requests for the public directory from being rewritten
RewriteRule ^public/.+$ - [L]

RewriteCond %{DOCUMENT_ROOT}/public/$0 -f
RewriteRule ^.+$ /public/$0 [L]

このルールを Codeigniter ルールの前に挿入する必要があります。そうしないと、ファイルが に書き換えられる可能性があるため/index.php/...です。

更新

まず、. を除外する必要がありますRewriteCond !-f/!-d

の URL はまたはでtest/indexある必要があります。http://mysite.com/test/indexhttp://mysite.com/test

于 2013-04-05T19:11:56.210 に答える