Faça o título do post como uma lesma no url por mod reescreva

1

Eu já postei uma pergunta, mas não estou satisfeito com as respostas. Eu tenho um URL, por exemplo

http://example.com/details.php?a=100&b=101&slug=power-programming-in-php

Eu quero escrevê-lo reescrevendo a regra como

http://example.com/power-programming-in-php

Atualmente, estou usando uma regra:

RewriteRule ^([a-zA-Z0-9]*-[a-zA-Z0-9]*)$  paper-ads-details.php?a=$1&b=$2&slug=$3   [L]

Agora estou preso, alguém tem alguma sugestão?

    
por Granadian 23.06.2011 / 13:05

1 resposta

2

No mínimo, o RewriteRule está com defeito, pois se refere a três variáveis de retorno diferentes, mas você só tem uma correspondência de grupo para fazer referência! Onde os valores 100 e 101 para a e b devem vir de um só pode adivinhar. Além disso, a expressão regular que você escreveu não corresponderá ao exemplo dado por você ter quatro conjuntos de traços, não um. Tente isso:

RewriteRule ^([-a-zA-Z0-9]+)$  /paper-ads-details.php?a=100&b=101&slug=$1   [L]

Observe que desde que comecei a classe de caracteres [] com um traço, o traço é entendido como adicionar um traço litteral à lista de opções, em vez de denotar um intervalo entre outros caracteres como na sintaxe a-z . Isso só funciona porque é o primeiro personagem. Minha regra deve corresponder a uma string com qualquer número de traços, mas sem nenhum período. Se um período ou outro caractere aparecer, ele deverá reverter para a correspondência normal de url.

    
por 23.06.2011 / 22:49