O arquivo de entrada é o único ponto de acesso para a aplicação, e pode haver múltiplos pontos de entrada, onde cada aplicação pode ter seu próprio arquivo de entrada. O sistema analisa os parâmetros da URL para determinar o módulo, controlador e ação solicitados. No ThinkPHP, as distinções entre maiúsculas e minúsculas são consideradas, pois o Linux é sensível a isso. Portanto, módulos, controladores, modelos, etc., devem seeguir a regra de nomenclatura CamelCase.
Se acessarmos diretamente o arquivo de entrada index.php sem especificar módulo, controlador ou ação, o sistema por padrão irá acessar a ação "index" do controlador "Index" no módulo "Home". Assim, os dois métodos de acesso abaixo produzirão o mesmo resutlado:
http://serverName/index.phphttp://serverName/index.php/Home/Index/index
Este formato de URL é chamado de modo PATHINFO. O ThinkPHP suporta quatro modos de URL, listados a seguir:
| Modo de URL | Configuração URL_MODEL |
|---|---|
| Modo comum | 0 |
| Modo PATHINFO | 1 |
| Modo REWRITE | 2 |
| Modo compatível | 3 |
Se todo o projeto usar o mesmo modo de URL, ele pode ser configurado no arquivo de configuração da aplicação. Se diferentes módulos usarem diferentes modos, esses podem ser definidos em seus respectivos arquivos de configuração. O arquivo de configuração mencionado aqui é geralmente o thinkphp\\Application\\Common\\Conf\\config.php. Cada módulo tem seu próprio arquivo de configuração, como thinkphp\\Application\\Admin\\Conf\\config.php para o módulo Admin e thinkphp\\Application\\Home\\Conf\\config.php para o módulo Home.
Modo comum
O modo comum usa parâmetros GET tradicionais para especificar o módulo, controlador e ação. Exemplo: http://servername/?m=home&c=user&a=login&var=value. Mesmo que o URL_MODEL seja configurado como 1, 2 ou 3, ainda é possível usar este método de passagem de parâmetros via GET. A variável PATH_INFO está definida no arquivo thinkphp\ThinkPHP\Conf\convention.php.
Modo PATHINFO
O modo PATHINFO é o padrão do sistema e oferece o melhor suporte para SEO. O sistema já faz ajustes internos para compatibilidade, portanto, funciona em a maioria dos ambientes de hospedagem. No modo PATHINFO, a URL seria: http://localhost/index.php/home/user/login/var/value/.
Você também pode modificar o separador de parâmetros. Por exemplo, se configurado assim:
'URL_PATHINFO_DEPR' => '_'
Agora, você pode usar sublinhados para separar os parâmetros, como: http://localhost/index.php/home/user_login_var_value/.
Modo REWRITE
O modo REWRITE adiciona suporte a regras de reescrita ao modo PATHINFO, permitindo a remoção do arquivo de entrada (index.php) da URL. Isso requer uma configuração adicional no sevridor web. Para Apache, crie um arquivo .htaccess na mesma pasta do arquivo de entrada, contendo:
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ index.php/$1 [QSA,PT,L]
</IfModule>
Com isso, a URL pode ser simplificada para: http://localhost/home/user/login/var/value.
Modo compatível
O modo compatível é usado em ambientes que não suportam PATHINFO. A URL neste modo é: http://localhost/?s=/home/user/login/var/value.
Você pode alterar o nome da variável de modo compatível, por exemplo:
'VAR_PATHINFO' => 'pathinfo'
O separador de parâmetros PATHINFO também é válido no modo compatível. Por exemplo, se configurado assim:
'URL_PATHINFO_DEPR' => '-'
A URL pode ser: http://localhost/?s=/home-user-login-var-value.
Para obter o mesmo efeito de URL do modo REWRITE, você pode combinar o modo compatível com regras de reescrita do servidor web. Para Apache, o arquivo .htaccess deve conter:
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ index.php?s=/$1 [QSA,PT,L]
</IfModule>
Assim, a URL pode ser acessada como: http://localhost/home/user/login/var/value.