4

すべてのトラフィックをROOT/public / index.phpにリダイレクトし、URLをgetリクエストに入れるphpフレームワークを構築しています。私の問題は、RewriteCondsが機能せず、ファイルとフォルダー名を受け入れていることです。

ルートディレクトリ内

<IfModule mod_rewrite.c>

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

</IfModule>

<files .htaccess>

 order allow,deny
 deny from all

</files>

パブリックディレクトリ

<IfModule mod_rewrite.c>

  RewriteEngine On

  RewriteCond %{REQUEST_FILENAME} !-f
  RewriteCond %{REQUEST_FILENAME} !-d
  RewriteRule ^(.*)$ index.php?url=$1 [PT,L]

</IfModule>
4

2 に答える 2

1

この[L]フラグは、ルールが一致した後にリダイレクトを停止するようにApacheに指示します。したがって、ルートフォルダが最初に来ると仮定すると、ルートフォルダはリダイレクトで実行および停止し、2番目のリダイレクトが役に立たなくなります。

問題を修正するには、次のようにします。

 RewriteEngine on
 RewriteRule    ^$    public/   
 RewriteRule    (.*) public/$1   
于 2012-04-21T09:31:33.270 に答える
0

既存のファイルやディレクトリもスクリプトにリダイレクトする場合:

パブリックディレクトリ

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

私の2セントのヒント:パーツを取り外して、代わりに?url$1何が入っているかを確認してください。$_SERVER['REQUEST_URI']

于 2012-04-21T09:01:51.813 に答える