Pergunta

Ugh .. mod_rewrite me faz sentir estúpido. Eu simplesmente não ter embrulhado meu cérebro em torno dele ainda. : /

Eu tenho esta url:

http://example.com/a/name/

... que eu quero apontar aqui:

http://example.com/a/index.php?id=name

... onde name é o que está sendo passado para index.php como o argumento id.

Qualquer coisa que eu tentei resultados em qualquer um 404 ou um 500 ..: (

Foi útil?

Solução

Para começá-lo fora:

RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !index.php
RewriteRule ^/?a/([^/]+)/?$ /a/index.php?id=$1 [QSA,L]

Se um tutorial reescrita não funciona para você, tentar outra .

Edit: index.php excluídos como por sugestão de Gumbo

Outras dicas

Se você quiser a barra final a ser opcional, você tem que excluir o arquivo que está reescrevendo a solicitação para. Caso contrário, você vai ter um bom recursão infinita.

RewriteEngine on
RewriteCond %{REQUEST_URI} !^/a/index\.php$
RewriteRule ^/a/([^/]+)/?$ /a/index.php?id=$1 [L]

Aqui qualquer pedido que começa com /a/… mas não /a/index.php é reescrito para /a/index.php.

Mas, se a barra no final é obrigatória, não há necessidade de excluir o arquivo de destino:

RewriteEngine on
RewriteRule ^/a/([^/]+)/$ /a/index.php?id=$1 [L]

Talvez algo ao longo das linhas

RewriteEngine on
RewriteBase /a/
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)/?$ index.php?id=$1 [L,QSA]

faria o truque.

Eu sugiro que você dê uma olhada neste URL:

http://www.dracos.co.uk/code/ apache-reescrita de problemas /

As soluções apresentadas irá funcionar, mas há algumas ressalvas explicado no URL, principalmente em relação? e # nas URLs si mesmos.

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