RewriteCond %{HTTP_HOST} !^www\.example\.com$ [NC] RewriteCond %{HTTP_HOST} ^(www\.)?([^\.]+)\.example\.com$ [NC] RewriteCond %{REQUEST_URI} ^/$ RewriteRule ^$ /process.php?p=%2 [NC,QSA]
O %2
backreference não estava sendo definido porque essa é uma referência anterior ao segundo grupo capturado do último correspondido CondPattern ( RewriteCond
pattern). A última CondPattern correspondente é ^/$
, que não possui nenhum grupo capturado, por isso %2
está sempre vazio.
Essa terceira diretiva RewriteCond
parece supérflua mesmo assim. Isso já está sendo verificado pelo RewriteRule
padrão ^$
(em um contexto por diretório, o prefixo de diretório é removido - portanto, isso está correto).
A primeira diretiva RewriteCond
também parece supérflua. Qualquer pedido para www.example.com
seria capturado pelo primeiro VirtualHost, então o hostname dentro deste VirtualHost nunca é www.example.com
, então esta diretiva sempre é avaliada como verdadeira.
Eu reescreveria isso como:
RewriteCond %{HTTP_HOST} ^(?:www\.)?([^.]+)\.example\.com$ [NC]
RewriteRule ^$ process.php?p=%1 [QSA]
Eu fiz o primeiro grupo sem captura, isto é. (?:www\.)
- o ?:
faz com que não seja capturado. Então, nós só recebemos %1
para o subdomínio real. Além disso, não há necessidade de escapar do ponto (para corresponder a um ponto literal) em uma classe de caractere. O sinal NC
no RewriteRule
é supérfluo aqui.
Eu também removi o prefixo barra na RewriteRule
substituição desde que você especificou o caminho da URL na diretiva RewriteBase
.
Isso só reescreve abc.example.com/
, isto é. uma solicitação para a raiz do documento.
Secondly, any requests for files from the subdomain outside of a base/root level need to be rewritten to be obtained from the root path of the standard domain without the subdomain. So
abc.example.com/css/style.css
needs to come fromexample.com/css/style.css
.
Como abc.example.com/
e example.com/
apontam para o mesmo local no sistema de arquivos, não vejo como você precisa fazer alguma coisa aqui? example.com/css/style.css
deve apontar para o mesmo arquivo que abc.example.com/css/style.css
.
E os outros arquivos na raiz do documento? por exemplo. %código%. No momento, isso simplesmente passa inalterado como nos arquivos CSS.