Pergunta

Estou tentando criar pequenos URLs como este:

site.com/abc123

vai para:

site.com/index.php?token=abc123

Mas continuo recebendo loops de redirecionamento, não importa o que eu tente, ou tenta redirecionar para index.php? token = index.php ..

Atual .htaccess é:

Options +FollowSymLinks
Options -MultiViews
RewriteEngine On
RewriteRule ^([^/]*)$ /index.php?token=$1 [L]
Foi útil?

Solução

Aqui está o que fiz (estou redirecionando códigos alfanuméricos como http://myurl.com/b32ad ):

Options +FollowSymLinks
RewriteEngine On
RewriteCond %{SCRIPT_FILENAME} !-f
RewriteCond %{SCRIPT_FILENAME} !-d
RewriteRule (.*) /index.php?token=$1 [L]

Outras dicas

Eu respondi uma pergunta semelhante ontem: htaccess: redirecionar um URL dinâmico - mostre apenas URL estático - conteúdo duplo

Isso deve servir:

RewriteCond %{QUERY_STRING} ^token=([a-zA-Z0-9]+)$
RewriteRule ^/ /%1? [R=302,L]

Isso é estranho, já que você tem o [L] opção anexada a essa regra. Poderia haver um externo Redirecionar causado por outra coisa?

De qualquer forma, você pode limitar a regra aos pedidos de arquivos inexistentes (talvez também os diretórios).

RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([^/]*)$ /index.php?token=$1 [L]

Vejo http://httpd.apache.org/docs/2.2/mod/mod_rewrite.html#rewritecond

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top