Как я могу перенаправить запросы к определенным файлам выше корня сайта?

Я запускаю новый веб-сайт, и у меня возникают трудности с обеспечением желаемой организации файлов / папок:

Ради аргумента скажем, что мой сайт будет размещен по адресу: http://mywebsite.com/

Я хотел бы (настроил) виртуальный хост Apache для сопоставления http://mywebsite.com/ с папкой /fileserver/mywebsite_com/www.

Проблема возникает, когда я решил, что я хотел бы поместить несколько файлов (favicon.ico и robots.txt) в папку, которая находится над / www, в которую Apache монтирует http://mywebsite.com/ в

robots.txt+favicon.ico go into => /fileserver/files/mywebsite_com/stuff

Поэтому, когда люди переходят на http://mywebsite.com/robots.txt, Apache будет передавать им файл из /fileserver/mywebsite_com/stuff/robots.txt

Я пытался настроить перенаправление через mod_rewrite, но увы:

RewriteRule ^(robots\.txt|favicon\.ico)$ ../stuff/$1 [L]

не принесло мне пользы, потому что в основном я говорил apache, чтобы он обслуживал что-то, что выше его монтированного root.

Можно ли каким-то образом достичь желаемой функциональности, настроив виртуальные хосты Apache (2.2.9) по-другому, или определив RewriteMap некоторого вида, который бы переписывал рассматриваемые URL-адреса не в другие URL-адреса, а вместо этого в пути к системным файлам? Если нет, какой будет предпочтительный курс действий для желаемой организации (если таковая имеется)?

Я знаю, что могу получить доступ к ранее упомянутым файлам через PHP, а затем транслировать их - скажем, с помощью readfile(..), но я бы хотел, чтобы Apache выполнял столько работы, сколько необходимо - он обязательно будет быстрее, чем ввод / вывод через PHP.

Большое спасибо, это уже лишило меня часов конструктивной работы. Не говоря уже о том, что бедный Apache перезапускается каждые несколько минут. Подумайте о бедном Apache:)

2 ответа

Решение

Кажется, вы настроены на использование RewriteRule. Тем не менее, я предлагаю вам использовать псевдоним:

Alias /robots.txt /fileserver/files/mywebsite_com/stuff/robots.txt

Кроме того, вам нужно будет сообщить Apache об ограничениях для этого файла. Если у вас есть несколько файлов, обработанных таким образом, сделайте это для полного каталога:

<Directory /fileserver/files/mywebsite_com/stuff>
    Order allow,deny
    Allow from all
</Directory>

Можете ли вы использовать символические ссылки?

ln -s /fileserver/files/mywebsite_com/stuff/robots.txt /fileserver/files/mywebsite_com/stuff/favicon.ico /fileserver/mywebsite_com/www/

(ln как cp, но создает символические ссылки вместо копий с -s.)

Другие вопросы по тегам