2017-01-07 12 views
1

最近、index.php(ルーティングを処理するファイル)とCSS/js/fontアセットをpublic/フォルダに移動しました。このpublic/フォルダ内のアイテムには、セキュリティ上の目的でのみアクセスできます。私はmysite.com/composer.lockにアクセスし、私の古い.htaccessとフォルダの設定で作曲家のロックファイルを見ることができたことを認識したとき、この問題に遭遇しました。ここで MVCパブリックフォルダhtaccessが動作しない

は私がmysite.com/car/createを訪問した場合、私は私が資産などmysite.com/css/style.cssにリンクする場合、それは実際にmysite.com/public/index.php?path=car/create

を指すようにしたい

を望むものである、私はそれが本当にmysite.com/public/css/style.cssを指すようにしたいですここで

は私のフォルダ構造である

ここ

私はこの問題を解決するかどうかはわかりませんすべて

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

で動作していない私の.htaccessです。それはちょうど空のページを生成し、私はまだルートディレクトリなどのファイルを直接訪問することができます。

答えて

1

既存のディレクティブは、既存のファイルに対する要求の書き換えを特に避けるため、引き続きルートディレクトリのファイルを参照することができます。また、静的リソースをpublic/index.php?path=に書き換えますが、おそらく失敗します。

代わりに以下のことを試してみてください。

RewriteEngine On 

# Stop processing if already in the /public directory 
RewriteRule ^public/ - [L] 

# Static resources if they exist 
RewriteCond %{DOCUMENT_ROOT}/public/$1 -f 
RewriteRule (.+) public/$1 [L] 

# Route all other requests 
RewriteRule (.*) public/index.php?path=$1 [L,QSA] 
関連する問題