Pergunta

Tudo,

Encontrei uma pequena peculiaridade interessante em um dos meus reescritores, que eu queria resolver pelo uso de referências nomeadas. No entanto, pelo que posso ver, isso não é possível no Mod_rewrite do Apache.

Eu tenho dois URLs recebidos, cada um contendo uma variável -chave, que precisa ser reescrita para a mesma ação da estrutura subjacente.

URLs de entrada:

/users/list/page-2
/users/list/2

Reescreva -se desejado

/? Módulo = usuários e ação = Lista e pagenum = 2

Eu gostaria de fazer algo assim

Rewriturele ^/(? Pu003Cmodule> ([ w]+))/(? Pu003Caction> ([ w]+))/(página-)? (? Pu003Cpagenum> ([ d]+)) $ /? Module = $ {Module} & Action = $ {Action} & pagenum = $ {pagenum} [L, qsa

No entanto, o Apache simplesmente não quer jogar assim e me dá valores nulos nos locais das referências de back -referências nomeadas. Para me dar ao redor do problema, usei referências numéricas aos grupos capturados (US $ 1, US $ 2, US $ 4) (mas estou quase no meio do limite de n = 9 apache). Portanto, isso não é uma parada para mim.

Eu gostaria de saber, se as backreferências nomeadas estiverem disponíveis no Mod_rewrite do Apache e, se forem, por que o padrão do meu reescritorulou não corresponde?

Obrigado, Ian

Foi útil?

Outras dicas

Se a mais recente resposta do @SuperSpace não funcionar, o que eu sugeriria é rotear todos os links que não devem direcionar arquivos/diretórios e direcioná -los para uma página de índice. Em seguida, configure uma classe de roteamento que aborda o nome da página e faz correspondência manual, para que você possa fazer com que sua matriz de captura regex nomeada e listar os modelos ou páginas que deseja alimentar.

Se você tiver que seguir por esse caminho, me avise e posso oferecer algum código das minhas aulas.

Parece que não há backreferências, depois de olhar para a fonte Mod_rewrite.

De qualquer forma, eu recomendo o uso da opção Rewritemap, em vez de uma longa lista de reescritores, pois será muito mais rápido do que itera através de uma longa lista.

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