Eu tenho a seguinte configuração com 2 hosts virtuais no meu Apache: www.domain.com e res.domain.com . O primeiro é aberto e o segundo é limitado a usuários registrados.
<VirtualHost *:80>
ServerName www.domain.com
DocumentRoot /website/www
<Directory "/website/www">
Options FollowSymLinks
AllowOverride All
RewriteEngine On
RewriteCond %{REQUEST_URI} !api/dispatch\.php$
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^api/.*$ api/dispatch.php [L,QSA]
</Directory>
</VirtualHost>
<VirtualHost *:80>
ServerName res.domain.com
DocumentRoot /website/res
<Directory "/website/res">
Options FollowSymLinks
AllowOverride All
AuthType Basic
AuthUserFile /website/res/users.sec
<Limit GET POST>
Require valid-user
</Limit>
</Directory>
</VirtualHost>
Gostaria de atender a todas as ligações http://res.domain.com/api/ * exatamente como se fossem http://www.domain.com/api/ *. Sem autenticação e mesmo comportamento ...
Importante : não quero que meus usuários vejam um redirecionamento ...
Preciso de ajuda porque tentei muitas coisas, mas sem sucesso.
EDIT 1 A idéia aqui é ter uma parte do site ('api' neste caso) acessível livremente (= sem autenticação) de todos os hosts virtuais sem replicar o código.
Pastas:
/local na rede Internet / www / img / api / css / ... / res / ...
Eu tentei combinar Alias, RewriteRule e Directory ... ex:
<VirtualHost *:80>
ServerName www.domain.com
DocumentRoot /website/www
<Directory "/website/www">
Options FollowSymLinks
AllowOverride All
RewriteEngine On
RewriteCond %{REQUEST_URI} !api/dispatch\.php$
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^api/.*$ api/dispatch.php [L,QSA]
</Directory>
</VirtualHost>
<VirtualHost *:80>
ServerName res.domain.com
DocumentRoot /website/res
Alias /api /website/www/api
<Directory "/website/www/api">
Options FollowSymLinks
AllowOverride All
Satisfy Any
Allow from all
RewriteEngine On
RewriteCond %{REQUEST_URI} !dispatch\.php$
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^.*$ dispatch.php [L,QSA]
</Directory>
<Directory "/website/res">
Options FollowSymLinks
AllowOverride All
AuthType Basic
AuthUserFile /website/res/users.sec
<Limit GET POST>
Require valid-user
</Limit>
</Directory>
</VirtualHost>
Nesse caso, a chamada para http://res.domain.com/api/ ... ainda é restrita com autenticação básica.
fonte
Respostas:
Satisfazer . Sua necessidade específica também está detalhada nos documentos Exigir .
Você precisará duplicar qualquer regra de reescrita no vhost res.domain.com. Se você deseja que o mesmo conteúdo seja entregue,
res.domain.com
pode ser necessário alias ores.domain.com/api
caminho para seu/website/www/api
diretório.fonte
Deixa comigo!
O RewriteBase estava ausente. Mesmo que não seja obrigatório na configuração do primeiro domínio, é no segundo caso!
Eu também consigo fazê-lo funcionar para qualquer host virtual que mova a configuração de diretório "api" no nível do servidor. Dá:
Obrigado @mindthemonkey pelo gatilho;)
fonte