-1

次のファイル ツリーがあります。

root
  -lib
  -config
  -public
      -img
      -css
      -js
      index.php
  .htaccess

.htaccess はルート フォルダーにあります。ほとんどのリクエストは public/index.php?request=$1 に書き換える必要がありますが、それは問題ではありません。

画像、css、javascript (または一般に、/public 内の他のすべてのファイルまたはディレクトリ) の別の書き換えルールが必要です。

それ以外の

example.com/public/css/style.css ファイルを以下で利用できるようにしたい example.com/css/style.css

そして代わりに

example.com/public/newfolder/randomfile.txt ファイルを以下で利用できるようにしたい example.com/newfolder/randomfile.txt

だから私はこの抽象を維持する必要があります。

特に、1 つの .htaccess ファイルで両方のケースを組み合わせることはできません。

これは、存在しないファイル/フォルダーの基本的な RewriteRule です。

RewriteRule ^(.*)$ public/index.php?request=$1 [QSA,L]

どんな助けでも大歓迎です。

4

1 に答える 1

1

RewriteCondリクエストに対応する実際のファイルがあるかどうかをテストしてから、書き換えを停止できます

RewriteEngine on

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

# everything else
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ public/index.php?request=$1 [QSA,L]

編集:

root のサブフォルダーがプロジェクト ルートとして使用されている場合:


RewriteEngine on

RewriteBase /subdir/

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

# everything else
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ public/index.php?request=$1 [QSA,L]
于 2013-04-08T07:42:06.670 に答える