2013-05-16 3 views
1

이전에는 가상 폴더 생성에 ln 명령을 사용하고있었습니다.mod_rewrite와 비슷한 가상 폴더를 만드는 법 ln -s 유닉스

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

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

그러나 나는

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

하지만 테스트 mod_rewrite를

함께하고 싶은이 나를 도울 수

트리 디렉토리

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

를 작동하지 않는 이유는 무엇입니까? 감사합니다

답변

0

수 없습니다. RewriteRules는 DocumentRoot 내의 위치에만 다시 쓸 수 있습니다. 어쨌든 왜 이럴 수 있니? symlink 솔루션은 오버 헤드가 적기 때문에 RewriteRule 솔루션보다 빠릅니다.

+0

심볼릭 링크가있는 프레임 워크를 본 적이 없으므로 mod_rewrite를 사용한다고 생각했습니다. – zetanova

+0

리튬 (li3)은 자산에 심볼릭 링크를 사용하도록 권장합니다. 그것은 라우터에서 기본 빌드를 가지고 있습니다. PHP가 개발 목적으로 요청한 파일을 제공하도록하지만, PHP 스레드를 낭비하기 때문에 프로덕션에서이를 권장합니다. – rpkamp

0

절대 경로를 사용해야합니다.

Alias /assets/ /www/app/assets/ 

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

아파치가 파일에 액세스 할 수 있어야 제공됩니다.

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

뿐만 아니라 작동합니다 :

는 더 mod_rewrite를 사용하는 이유하지만 없다.