Preciso mudar o meu .htaccesse há duas linhas que não entendi.
RewriteCond %{REQUEST_FILENAME} !-l
RewriteRule ^(.+)$ index.php?url=$1 [QSA,L]
Quando devo usar essas linhas?
Preciso mudar o meu .htaccesse há duas linhas que não entendi.
RewriteCond %{REQUEST_FILENAME} !-l
RewriteRule ^(.+)$ index.php?url=$1 [QSA,L]
Quando devo usar essas linhas?
Respostas:
Não é o lugar para dar um tutorial completo, mas aqui é resumido;
RewriteCond significa basicamente "execute o próximo RewriteRule apenas se for verdadeiro". O !-lcaminho é a condição de que a solicitação não seja para um link ( !significa não, -lsignifica link)
O RewriteRule significa basicamente que se a solicitação for feita que corresponda ^(.+)$(corresponder a qualquer URL, exceto a raiz do servidor), ela será reescrita, o index.php?url=$1que significa que uma solicitação de olleserá reescrita como index.php?url=olle).
QSAsignifica que se houver uma string de consulta passada com o URL original, ela será anexada à reescrita ( olle?p=1será reescrita como index.php?url=olle&p=1.
L significa que se a regra corresponder, não processe mais RewriteRules abaixo desta.
Para informações mais completas sobre isso, siga os links acima. O suporte de reescrita pode ser um pouco difícil de entender, mas existem alguns exemplos sobre stackoverflow para aprender.
?a &, tornando-se impossível distinguir entre /page&foobarvs /page?foobar. Como posso impedir a substituição do QSA ?para &?
Se as seguintes condições forem verdadeiras, reescreva o URL:
Se o nome do arquivo solicitado não for um diretório,
RewriteCond %{REQUEST_FILENAME} !-d
e se o nome do arquivo solicitado não for um arquivo normal existente,
RewriteCond %{REQUEST_FILENAME} !-f
e se o nome do arquivo solicitado não for um link simbólico,
RewriteCond %{REQUEST_FILENAME} !-l
em seguida, reescreva a URL da seguinte maneira:
Pegue o nome do arquivo de solicitação inteiro e forneça-o como o valor de um parâmetro de consulta "url" para index.php. Anexe qualquer string de consulta do URL original como parâmetros de consulta adicionais (QSA) e pare de processar este arquivo .htaccess (L).
RewriteRule ^(.+)$ index.php?url=$1 [QSA,L]
Outro exemplo:
RewriteRule "/pages/(.+)" "/page.php?page=$1" [QSA]
Com o sinalizador [QSA], uma solicitação de
/ pages / 123? um = dois
será mapeado para
/page.php?page=123&one=two