1

以前は、仮想フォルダーの作成にコマンド ln を使用していました。

cd public
ln -s ../app/assets/ assets

~ public > ls -l
lrwxr-xr-x  1 carlosmontalvo  admin   14 May 15 12:21 assets -> ../app/assets/

しかし、私はmod_rewriteでやりたい

でテストしました

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^/?assets(.*) ../app/assets$1 [P] #here
RewriteRule ^(.*)$ index.php [QSA,L]

しかし、これは機能しません

ツリー ディレクトリ

├── app
│    └─ assets
│       ├── images
│       ├── javascripts
│       │   └── application.js
│       └── stylesheets
│           └── application.css
├── public
│   ├── 404.html
│   ├── 422.html
│   ├── 500.html
│   ├── assets -> ../app/assets/
│   ├── index.php
│   └── robots.txt

私を助けることができますか?ありがとう

4

2 に答える 2

0

できません。RewriteRules は、 内の場所にのみ書き換えることができますDocumentRoot。とにかくなぜこれをするのですか?symlink ソリューションはオーバーヘッドが少ないため、RewriteRule ソリューションよりも高速です。

于 2013-05-16T07:02:32.510 に答える
0

絶対パスを使用する必要があります。

Alias /assets/ /www/app/assets/

<Directory "/www/app/assets/">
Require all granted
</Directory>

Apache がファイルにアクセスできる場合、動作するはずです。

使用する理由はありませんmod_rewriteが:

RewriteEngine On
RewriteCond /www/public/%{REQUEST_FILENAME} !-f
RewriteCond /www/public/%{REQUEST_FILENAME} !-d
RewriteRule ^/assets/(.*)$ /www/app/assets/$1 [L]

同様に動作するはずです。

于 2014-11-14T19:21:45.613 に答える