2015-05-18 2 views
0

Я с помощью этого HTAccess для доступа public/css, public/js, public/images папки напрямую, перепишем удалить публику из URL:Redirect или запретить прямой доступ к общей папке

<IfModule mod_rewrite.c> 
    RewriteEngine On 

    RewriteBase/
    RewriteRule ^(css|js|images)/(.*)$ public/$1/$2 [QSA,L] 
</IfModule> 

Например. когда доступ этот URL http://localhost/css/file.css показывает http://localhost/public/css/file.css

Я хочу, чтобы запретить доступ к URL http://localhost/public/css/file.css но позволяют http://localhost/css/file.css, можно это сделать?

+0

Могу ли я спросите, почему это имеет значение? В любом случае вы можете получить доступ к файлу css. Что все равно в источнике. Все активы будут доступны клиенту. –

+0

@PanamaJack Спасибо за внимание, нет особой причины, это будет вопрос «канонического URL». –

+0

Проблема, о которой я думал, заключалась в том, что пользователь никогда не видит URL-адреса, и вы можете использовать robots.txt, чтобы предотвратить обход этой папки, но я просто не видел смысла в папке с ресурсами, которая должна быть доступна для страницы, чтобы показать правильно. –

ответ

0

Для решения этой проблемы можно использовать %{THE_REQUEST} с RewriteCond, например:

RewriteCond "%{THE_REQUEST}" "^GET\s/public/" 

Если потребности любые методы (GET, POST, PUT и т.д.), перенаправлять например .:

<IfModule mod_rewrite.c> 
    RewriteEngine On 

    RewriteBase/

    RewriteCond "%{THE_REQUEST}" "^[A-Z]+\s/public/" 
    RewriteRule ^public/(.*)$ other-directory/$0 [QSA,L] 

    RewriteRule ^(css|js|images)/(.*)$ public/$1/$2 [QSA,L] 
</IfModule> 

Запретить доступ, например .:

<IfModule mod_rewrite.c> 
    RewriteEngine On 

    RewriteBase/

    RewriteCond "%{THE_REQUEST}" "^[A-Z]+\s/public/" 
    RewriteRule ^public/(.*)$ fake-directory/$0 [F] 

    RewriteRule ^(css|js|images)/(.*)$ public/$1/$2 [QSA,L] 
</IfModule> 
Смежные вопросы