caminho do subdomínio de caractere curinga

3

Eu tenho meu site configurado assim:

RewriteCond %{HTTP_HOST} !^www\.example\.com
RewriteCond %{HTTP_HOST} ([^.]+)\.example\.com [NC]
RewriteRule ^/?$ /user/profile.php?name=%1 [L]

O que isto significa é que, se o usuário visitar: test.example.com , ele mostrará o conteúdo do arquivo: example.com/user/profile.php?name=test . Se alguém acessar lol.example.com , ele mostrará a página: example.com/user/profile.php?name=lol , mas o URL permanecerá o mesmo com o subdomínio, como test.example.com e lol.example.com .

Essa parte está funcionando.

Pergunta:

Se eu for para test.example.com/login , ele mostrará o arquivo raiz do meu domínio. Como posso fazer com que mostre as coisas da pasta /user ?

Por exemplo:

  • test.example.com/login mostrará example.com/user/login e test.example.com/register mostrar example.com/user/register , mas a URL permanecerá a mesma com o subdomínio?

  • test.example.com/pathtofile deve obter o conteúdo de example.com/user/pathtofile . "pathtofile" deve ser dinâmico. Eu só quero que o caminho procure na pasta /user , não na pasta raiz.

por baileyJchoi 30.03.2017 / 20:13

1 resposta

2

if someone goes to lol.example.com, it will show page: example.com/user/profile.php?name=lol.

Estritamente falando, ele mostrará a página: lol.example.com/user/profile.php?name=lol (o subdomínio não é removido). Mas como (eu suponho) todos os subdomínios e o domínio principal apontam para o mesmo lugar no sistema de arquivos, isso funciona.

test.example.com/pathtofile should get the contents of example.com/user/pathtofile

Sua diretiva original apenas reescreve uma solicitação para a raiz do documento ( test.example.com/ ). Para reescrever /pathtofile , você pode adicionar outro bloco de regras após o acima em .htaccess . Por exemplo:

RewriteCond %{HTTP_HOST} !^www\.example\.com
RewriteCond %{HTTP_HOST} [^.]+\.example\.com [NC]
RewriteCond %{REQUEST_URI} ^/([^/]+)$
RewriteRule !^user/ /user/%1 [L]

Isso reescreve todas as solicitações que ainda não iniciam /user/ e consistem em apenas um segmento de caminho (comprimento diferente de zero), como em seu exemplo (por exemplo, /pathtofile e não /path/to/file ) e reescreve para /user/pathtofile .

UPDATE: Se você tiver um ErrorDocument definido, precisará abrir uma exceção anteriormente em seu arquivo '.htaccess para evitar que sub-requisições do documento de erro sejam reescritas. Por exemplo:

RewriteRule ^404\.php$ - [L]
    
por 30.03.2017 / 22:27