9

index.php にディスパッチャ関数があるので、URL は次のようになります。

/blog/show に行く

/index.php/blog/show

<IfModule mod_rewrite.c>
    RewriteEngine オン
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^(.*)$ index.php?url=$1 [QSA,L]
</IfModule>

これを変更して、すべての静的ファイルをパブリック ディレクトリにダンプできるようにするにはどうすればよいですか。

たとえば、 /docs/lolcats.pdf アクセス

ドライブ上の /public/docs/lolcats.pdf

私はこれを試しました

RewriteCond %{REQUEST_FILENAME} !f
RewriteRule ^(.*)$ public/$1 [QSA,L]
4

1 に答える 1

15

これを試して:

RewriteCond %{DOCUMENT_ROOT}public%{REQUEST_URI} -f
RewriteRule !^public/ public%{REQUEST_URI} [L]

ルートの下のサブディレクトリで使用する場合:

RewriteCond %{REQUEST_URI} ^/subdir(/.*)
RewriteCond %{DOCUMENT_ROOT}subdir/public%1 -f
RewriteRule !^public/ public%1 [L]

サブディレクトリに明示的に名前を付けずに別の解決策を見つけました:

RewriteRule ^public/ - [L]
RewriteCond public/$0 -F
RewriteRule .* public/$0 [L]

重要な変更は、前者がサブリクエストをトリガーする-F代わりに使用することでした。-f

于 2009-01-28T11:48:24.747 に答える