.htaccess - 허용 - mod_rewrite:파일이 다른 디렉토리에 존재한다면, 대신



options indexes followsymlinks apache (1)

the %{DOCUMENT_ROOT}%{REQUEST_URI} 용기를 사용해보십시오.

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{DOCUMENT_ROOT}/assets/%{REQUEST_URI} -f
RewriteRule ^(.+)$ assets/$1

편집 : 나는 대신이보십시오 :보십시오.

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_URI} ^/([^/]+)/(.+)$
RewriteCond %{DOCUMENT_ROOT}/%1/assets/%2 -f
RewriteRule ^(.*)$ /%1/assets/%2 [L,R]

example.com/test/ 웹 사이트가 있습니다. 웹 사이트는 다음과 같이 배치됩니다 :

example.com
└── test/
    ├── assets/
    │   └─ stylesheet.css
    │
    ├── .htaccess
    └── index.php

index.php 여기 라우터, 요즘에는 분명 멋지다.

사용자가 example.com/test/stylesheet.css 와 같은 페이지를 요청할 때마다 assets/ 이 해당 파일을 가지고 있는지 확인하고, 그렇다면 index.php URL을 제공하는 대신 해당 파일을 제공하고 싶습니다. 이상적으로는 다음과 같이 작동합니다.

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond assets/%{REQUEST_FILENAME} -f
RewriteRule ^(.+)$ assets/$1

하지만 %{REQUEST_FILENAME} 이 (가) 절대 경로이기 때문에 assets/%{REQUEST_FILENAME}assets/home/public/test/stylesheet.css 와 같은 것으로 나타납니다. %{REQUEST_URI} 는 더 좋지 않습니다. assets/test/stylesheet.css 됩니다. 나는 또한 이 질문 을 보았지만 그 대답은 효과가 없었다.

PHP를 사용하지 않고이 작업을 수행 할 수있는 방법이 있습니까? (그렇지 않다면 PHP의 readfile 사용 하겠지만 LFI 나 다른 것에 대해서는 걱정하지 않으려 고합니다.)