2013-03-15 3 views
1

Я использую этот код:Как проверить, существует ли файл или нет в определенной папке в .htaccess?

RewriteCond public/%{REQUEST_FILENAME} -f [OR] 
RewriteCond public/%{REQUEST_FILENAME} -d 
RewriteRule public/.* - [L] 

и он не работает.

, например, я хочу, чтобы URL: http://example.com/style.css быть Interpeted как этот

общественности/style.css

если style.css существует в общедоступном каталоге. Спасибо :)

ответ

1

Если я правильно помню:

RewriteCond %{DOCUMENT_ROOT}/public%{REQUEST_URI} -f [OR] 
RewriteCond %{DOCUMENT_ROOT}/public%{REQUEST_URI} -d 
RewriteRule public/.* - [L] 

EDIT

%{REQUEST_FILENAME} содержит полный путь к запрашиваемому файлу. Так, например, /var/www/example.com/index.html. Таким образом, добавление public/ к фронту приведет к public/var/www/example.com/index.html, который никогда не существует. Поэтому Вы можете использовать %{DOCUMENT_ROOT}, который содержит /var/www/example.com и %{REQUEST_URI}, который содержит /index.html

отметить также, что -f и -d нужен полный путь, а не просто Wwwroot-относительна.

+0

Можете ли вы объяснить код? :) – 2013-03-15 18:29:10

+0

Нет проблем. См. Править выше. Позвольте мне знать, если у вас есть еще вопросы. – Gerben

+0

Как я могу сделать, что все файлы, которые не существуют, вернут 404? – 2013-04-01 12:54:29

Смежные вопросы