Você pode criar um RewriteMap
que mapeie nomes de arquivos "exclusivos" para o domínio em que está armazenado. Você pode então usar uma diretiva RewriteRule
para procurar o domínio a partir do nome de arquivo "exclusivo" solicitado e reescrever internamente o pedido.
Por exemplo, na configuração do seu servidor, defina o RewriteMap
:
RewriteMap fn2domain "txt:/var/www/filename-to-domain-map.txt"
Em seguida, em /var/www/filename-to-domain-map.txt
você incluiria todos os mapeamentos de nome de arquivo:
# Filename to Domain map
unique_filename1 domain1
unique_filename2 domain2
unique_filename3 domain3
Agora você pode usar mod_rewrite para fazer referência a este mapa para reescrever internamente uma solicitação de /unique_filename2
a /domain2/unique_filename2
(por exemplo).
RewriteEngine On
RewriteRule ^/([^/]+)$ /${fn2domain:$1}/$1 [L]
Isso pressupõe que "unique_filename" é exatamente isso; apenas um nome de arquivo. Nenhum caminho de URL adicional.
Você poderia tornar a pesquisa mais eficiente usando um arquivo de hash dbm:
DBM (ou fastdbd:
SQL Query?) em vez de um arquivo de texto simples, se você tiver muitos "nomes de arquivos".
Referência:
link
Como alternativa, você pode executar verificações de sistema de arquivos para a existência de "unique_filename" em cada subdiretório domain . O primeiro jogo vence. Isso pode ser OK se você tiver apenas 2 ou 3 subdiretórios de domínio, mas se tiver muitos, isso pode se tornar um problema de desempenho, pois as verificações do sistema de arquivos são relativamente caras. Por exemplo, novamente usando mod_rewrite:
RewriteEngine On
# Is it in domain1? Then rewrite to domain1 subdirectory
RewriteRule %{DOCUMENT_ROOT}/domain1/$1 -f
RewriteRule ^/([^/]+)$ /domain1/$1 [L]
# Is it in domain2? Then rewrite to domain2 subdirectory
RewriteRule %{DOCUMENT_ROOT}/domain2/$1 -f
RewriteRule ^/([^/]+)$ /domain2/$1 [L]
# Is it in domain3? Then rewrite to domain3 subdirectory
RewriteRule %{DOCUMENT_ROOT}/domain3/$1 -f
RewriteRule ^/([^/]+)$ /domain3/$1 [L]
# Repeat for each domain...