0

私は、次の安らかなURIデザインを備えた基本的なMVC構造を持っています:

mysite.com/appdir/:index/:controller/:action/

私のuriが次のようになるように、インデックスルートパラメーターを非表示にしたい:

mysite.com/appdir/:controller/:action/

私の基本的なフォルダ構造は次のとおりです。

appdir/
  app/
    -->Controller/
    -->Model/
    -->View/
  config/
  library/
  public/
    -->.htaccess
    -->index.php
  .htaccess
  index.php

appdir/.htaccess:

<IfModule mod_rewrite.c>
    RewriteEngine on
    RewriteRule    ^$    public/    [L]
    RewriteRule    (.*) public/$1    [L]
</IfModule>

appdir/public/.htaccess:

<IfModule mod_rewrite.c>
    RewriteEngine On

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

    RewriteRule ^(.*)$ index.php?url=$1 [PT,L]
</IfModule>
<IfModule !mod_rewrite.c>
    ErrorDocument 404 index.php
</IfModule>

インデックスを隠すことができないようです。いくつかの書き換えルールを試しましたが、何もうまくいかないようです。CodeIgniter を使用すると、通常は追加RewriteRule ^(.*)$ index.php?/$1 [L,QSA]して問題を解決できますが、これに 3 時間取り組んできましたが、成功しませんでした。

4

1 に答える 1

1

まず、リクエスト パスは常に / で始まるため、最初のルールは次のように記述します。

RewriteRule の RewriteEngine ^/(.*)$ public/$1 [L]

次に、パブリックディレクトリのhtaccessで使用する必要があると思います

RewriteBase /パブリック

そして最後に、Web サーバーの DocumentRoot として public を設定し、すべてのルールを 1 つのファイルに入れてみませんか? セットアップでは appdir/index.php にアクセスできません。

于 2013-05-18T21:39:30.123 に答える