Можно ли использовать файл .htaccess, чтобы переписать это:
http://customer1.com/app/assets/css
в это:
http://customer1.com/app/customers/customer1/assets/css?
Если да, то как?
РЕДАКТИРОВАТЬ: цель состоит в том, чтобы избежать каких-либо обновлений в .htaccess при добавлении нового клиента EDIT2:
Я вижу, что мой вопрос был слишком расплывчатым. У меня есть CMS, которая используется для множества разных клиентов (www.foo.com, www.bar.com, www.somerandomname.com). У каждого клиента есть свои уникальные файлы (дизайн, загрузка) в каталоге / data / www / cms / customers / XXXXXX /, где XXXXXX - это имя клиента. В конфигурационном файле Apache по умолчанию DocumentRoot установлен в / data / www / cms /.
Я пытаюсь получить URL-адрес http://www.foo.com/app/assets/css/bg.png для возврата файла из указанного каталога данных клиентов, то есть /data/www/cms/app/customers/foo.com/assets/css/bg.png.
Я не знаю о .htaccess
файл, но я уверен, что это сработает:
RewriteEngine On
RewriteCond %{HTTP_HOST} customer([0-9]+)\.com
RewriteRule ^/app/(.*) /app/customers/customer%1/$1 [QSA]
Пояснение:
RewriteCond %{HTTP_HOST} customer([0-9]+)\.com
поместит в переменную '%1
'номер клиента, т.е.'1
'
RewriteRule ^/app/(.*) /app/customers/customer%1/$1 [QSA]
Значит: если путь начинается с участием '/app/
'затем перепишите его на /app/customers/customer
и добавьте переменную '%1
'(т.е.'1
'в нашем примере), поэтому он должен работать с тем, о чем вы просите: переписать на http://customer1.com/app/customers/customer1/
.
Извините, но ваш вопрос не совсем точен, и вам следует либо привести больше примеров, либо более конкретно указать, что вы хотите сделать, но я сделал все возможное, чтобы помочь вам.
Вы можете использовать RewriteMap
директива. Представьте, что вы разместили в нем все веб-сайты своих клиентов и нужные каталоги следующим образом:
alsace 1
aquitaine 2
auvergne 3
basse-normandie 4
bourgogne 5
bretagne 6
centre 7
champagne-ardenne 8
corse 9
franche-comte 10
haute-normandie 11
то я использую RewriteRule следующим образом:
RewriteMap mapregions dbm:/web/htdocs/maps/regions.map
RewriteRule ^/region/(.*)/$ /handle_regions.php \
[NC,E=REGION:${mapregions:$1|notfound}]
Итак, что он делает: если вы запрашиваете URL-адрес, например /region/(.*)/
он перенаправляет на /handle_regions.php
и устанавливает переменную среды REGION
Потом просто проверяю, найдено ли оно: если нет - останавливаюсь:
RewriteCond %{ENV:REGION} notfound
# "not found" = 404 :
RewriteRule .* - [R=404,L]
И вот вы здесь. Извините, но со всем, что я только что сказал, у вас достаточно материала для решения вашей проблемы. У меня нет времени делать все за тебя, извини, чувак, я сделал все, что мог, чтобы тебе помочь ... и я надеюсь, что это поможет!
Это будет примерно так:
RewriteEngine On
RewriteCond %{http_host} !^customer1\.com\/app\/$
RewriteRule ^/?(.*)$ http://customer1.com/app/customers/customer1/$1