Apache Rewrite: дерево каталогов в каталог поддоменов - PullRequest
0 голосов
/ 09 марта 2010

У меня есть веб-приложение, в котором есть один набор файлов, который используется более чем 50 клиентами, и вся конфигурация для каждого сайта происходит из файла config.php в соответствующих каталогах. Это достигается с помощью PHP разбора URL. Все это прекрасно работает, просто есть проблема с пользовательскими загруженными документами, которые клиент может сделать и находится в

/ вар / WWW / сайты / user1 / кэш

Может быть несколько подкаталогов. Так что при запросе http://user1.site.com/cache/subdir1/image.jpg это нужно читать из /var/www/sites/user1/cache/subdir1/image.jpg

Клиенту разрешено загружать файлы любого типа, поэтому мне просто нужно переписать, чтобы принимать любые запросы / кеш, затем захватить поддомен и указать правильный каталог.

Придумал это, но все еще получаю неверную страницу

RewriteEngine On
RewriteCond %{HTTP_HOST} ^([^\.]+)\.site\.com$
RewriteRule ^cache/(.*)$ /sites/%1/cache/$1 [L]

Любая помощь приветствуется.

Ответы [ 2 ]

0 голосов
/ 10 марта 2010

/ var / www / - это место, где файлы находятся в файловой системе. Я маршрутизировал на основе корня документа, поэтому мне не нужно было помещать это туда. Но я понял, что мне не хватает передней косой черты в / cache /. Хотя ваш ответ на самом деле не был тем, что я искал, он заставил меня понять, чего мне не хватало. Спасибо.

RewriteEngine On
RewriteCond %{HTTP_HOST} ^([^\.]+)\.site\.com$
RewriteRule ^/cache/(.*)$ /sites/%1/cache/$1 [L]
0 голосов
/ 09 марта 2010

Если я правильно прочитал документацию RewriteRule , флаг L сам по себе сгенерирует внутреннее перенаправление, означающее, что подстановка будет интерпретирована как путь локальной файловой системы.

Попробуйте использовать полный путь:

RewriteRule ^cache/(.*)$ /var/www/sites/%1/cache/$1 [L]

или выполните перенаправление external (используя HTTP-статус возврата «302 MOVED TEMPORARILY»), чтобы позволить браузеру пользователя повторно отправить запрос с новым путем:

RewriteRule ^cache/(.*)$ /sites/%1/cache/$1 [L,R]

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...