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

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

Ради аргумента предположим, что мой сайт будет размещен по адресу: 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 ]

4 голосов
/ 16 января 2009

Кажется, вы настроены на использование 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>
1 голос
/ 15 января 2009

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

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

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

...