Estou trabalhando em uma subpasta no meu site. O .htaccess naquela pasta tem as seguintes 2 linhas:
RewriteEngine on
RewriteRule ^(.*)$ page.php?id=$1 [L]
Meu arquivo php na subpasta tem o seguinte código:
print_r($_GET);
Quando vou para a seguinte página:
https://www.example.com/subfolder/ddd
Recebo o seguinte na tela:
Matriz ( [id] => page.php )
O que eu quero é:
Matriz ( [id] => ddd )
O que estou fazendo errado?
Tenha em mente que o flag `L` somente encerra a reescrita para o loop atual. Esse é um comportamento documentado.
A reescrita começará novamente se a solicitação for reescrita por qualquer regra. Aqui, ela é reescrita de
ddd
parapage.php?id=ddd
, então, na próxima olhada do processo de reescrita, ela será reescrita parapage.php?id=page.php
. Isso não resulta em uma solicitação alterada (opage.php
não é alterado). Então, a reescrita para e você obtém o resultado que obtém.Você tem duas opções imediatas:
1.) Use a
END
bandeira em vez daL
bandeira:2.) Use um adicional
RewriteCond
: