nível caso .htaccess rewritecond reescrita 2 pasta = info
-
05-07-2019 - |
Pergunta
Eu queria conjunto .htaccess
para reescrever:
example.com/bla/info/
para
example.com/info/index.php?q=bla
example.com/bla/info/txt/
para
example.com/info/index.php?q=bla&t=txt
Eu queria que o navegador ainda para exibir:
example.com/bla/info/txt/
Eu não queria reescrever no nível 2 regravações, como:
example.com/bla/xxx/
ou
example.com/ccc/zzz/aaa/
e
example.com/silly/info/
iria funcionar tão bem como
example.com/strange/info/mytxt/
Será que isso faz sentido?
Qualquer ajuda?
Solução
Se você começar o seu padrão com ^ e terminá-la com US $, a regra só se aplica se os jogos de cordas todo.
RewriteRule ^/bla/info/$ /info/index.php?q=bla
RewriteRule ^/bla/info/txt/$ /info/index.php?q=bla&t=txt
Se você usar não use a opção [R], o URL mostrado no navegador será o que o usuário digitou.
Você está tentando fazer isso de propósito geral? Se assim for, você pode usar-type regex correspondente e substituição de variáveis. Para fazer 'bla' corresponder a qualquer cadeia até a próxima barra (/), o uso
([^/]+)
no seu padrão e referência-lo com US $ 1 em sua substituição.
RewriteRule ^/([^/]+)/info/$ /info/index.php?q=$1
RewriteRule ^/([^/]+)/info/([^/]+)/$ /info/index.php?q=$1&t=$2
Eu recomendo os Apache páginas sobre mod_rewrite para mais informações .
[Edit. Fixa as regras de não incluir o nome do host no padrão, como o poster original descoberto.]
-
BMB
Outras dicas
você me pegou no caminho certo.
i acabou com algo como isto:
RewriteRule ^([^/\.]+)/info/?$ example/info/index.php?q=$1 [L]
muito obrigado