Reutilizando variáveis de ambiente do Apache durante o uso de SetEnv

2

Então eu defino uma variável do apache e gostaria de usar o valor para definir variáveis adicionais. Isso é possível, eu tentei vários métodos para fazer isso funcionar

SetEnv URL_STATIC http://www.static.com

Não funciona

SetEnv URL_STATIC_MORE %{ENV:URL_STATIC}/path/path

Também não funciona: (

 SetEnv URL_STATIC_MORE ${URL_STATIC}/path/path

Idealmente, gostaria que o URL_STATIC_MORE fosse ' link ' quando tudo estiver dito e concluído.

UPDATE:

O motivo mais longo que eu quero fazer isso é criar um conjunto de links que eu possa usar em HTML / SSI. Eu não tenho php no meu servidor, e isso não está sob meu controle.

Então, eu gostaria de poder usar

<a href="<!--#echo var="ONE_VARIABLE_FOR_URL" -->">blah</a>

em vez de

<a href="<!--#echo var="ROOT_URL" --><!--#echo var="PATH_URL" -->">blah</a>

Mais uma vez, eu não tenho PHP disponível para mim, e tenho que fazer isso para milhares de páginas, então colocar isso no .htaccess faz sentido. Eu também tenho vários URLs de raiz, então minha configuração será parecida com:

SetEnv URL_ROOT_CUSTSVC http://customerservice.company.com
SetEnv URL_ROOT_CORPORATE http://corp.company.com
SetEnv URL_ROOT_PRODUCTS http://products.company.com

SetEnv URL_ROOT_CUSTSVC_1 ${URL_ROOT_CUSTSVC}/path/1
SetEnv URL_ROOT_CUSTSVC_2 ${URL_ROOT_CUSTSVC}/path/2
SetEnv URL_ROOT_CUSTSVC_3 ${URL_ROOT_CUSTSVC}/path/3

SetEnv URL_ROOT_CORPORATE_1 ${URL_ROOT_CORPORATE}/path/1
SetEnv URL_ROOT_CORPORATE_2 ${URL_ROOT_CORPORATE}/path/2
SetEnv URL_ROOT_CORPORATE_3 ${URL_ROOT_CORPORATE}/path/3

SetEnv URL_ROOT_PRODUCTS_1 ${URL_ROOT_PRODUCTS}/path/1
SetEnv URL_ROOT_PRODUCTS_2 ${URL_ROOT_PRODUCTS}/path/2
SetEnv URL_ROOT_PRODUCTS_3 ${URL_ROOT_PRODUCTS}/path/3
    
por Roy Rico 11.08.2011 / 03:14

2 respostas

2

As variáveis de ambiente funcionam apenas com os seguintes módulos do Apache:

Eles não podem ser chamados com SetEnv porque essa é uma diretiva do módulo mod_env .

Mais informações: link

    
por 11.08.2011 / 06:14
0

Parece haver uma solução alternativa usando mod_rewrite, embora as especificações dependam de você precisar das variáveis de todos os três domínios configuradas para todas as solicitações ou apenas das variáveis para o domínio atual:

RewriteEngine on

RewriteCond %{HTTP_HOST} ^(customerservice.company.com)$
RewriteRule .* - [E=URL_ROOT:http://%1,E=URL_PATH_1:http://%1/custserv/path/1,E=URL_PATH_2:http://%1/custserv/path/2,E=URL_PATH_3:http://%1/custserv/path/3]

RewriteCond %{HTTP_HOST} ^(corp.company.com)$
RewriteRule .* - [E=URL_ROOT:http://%1,E=URL_PATH_1:http://%1/corp/path/1,E=URL_PATH_2:http://%1/corp/path/2,E=URL_PATH_3:http://%1/corp/path/3]

RewriteCond %{HTTP_HOST} ^(products.company.com)$
RewriteRule .* - [E=URL_ROOT:http://%1,E=URL_PATH_1:http://%1/products/path/1,E=URL_PATH_2:http://%1/products/path/2,E=URL_PATH_3:http://%1/products/path/3]

Se você precisar de todas as variáveis definidas para cada página, independentemente do domínio de solicitação, basta trocar% {HTTP_HOST} pelo nome do host em questão e renomear suas variáveis de acordo:

RewriteEngine on

RewriteCond customerservice.company.com ^(customerservice.company.com)$
RewriteRule .* - [E=URL_ROOT_CUSTSVC:http://%1,E=URL_PATH_CUSTSVC_1:http://%1/custserv/path/1,E=URL_PATH_CUSTSVC_2:http://%1/custserv/path/2,E=URL_PATH_CUSTSVC_3:http://%1/custserv/path/3]

RewriteCond corp.company.com ^(corp.company.com)$
RewriteRule .* - [E=URL_ROOT_CORPORATE:http://%1,E=URL_PATH_CORPORATE_1:http://%1/corp/path/1,E=URL_PATH_CORPORATE_2:http://%1/corp/path/2,E=URL_PATH_CORPORATE_3:http://%1/corp/path/3]

RewriteCond products.company.com ^(products.company.com)$
RewriteRule .* - [E=URL_ROOT_PRODUCTS:http://%1,E=URL_PATH_PRODUCTS_1:http://%1/products/path/1,E=URL_PATH_PRODUCTS_2:http://%1/products/path/2,E=URL_PATH_PRODUCTS_3:http://%1/products/path/3]

Infelizmente, essa não é a maneira mais legível de definir variáveis de acordo com os valores de outras variáveis. Se você precisa de legibilidade, isso irá, infelizmente, requerer algum tipo de script (PHP, perl, ou talvez até mesmo shell, se você tiver esse tipo de acesso - o que você já disse que não faz).

Mas, ei, se a legibilidade não é um problema, isso deve funcionar bem!

    
por 10.06.2013 / 22:49

Tags