apache mod_rewrite

1

Eu quero que o mod_rewrite faça isso:

  • http://server/* - > redirecionar para http://server/app/*
  • http://server/app/* não deve ser redirecionado.

  • http://server.domain/* - > redirecionar para http://server/app/*

  • http://server.domain/app* - > redirecionar para http://server/app/*

Tem que trabalhar com mod_jk!

Editar: esta é a solução final

# force use of host 'server'
RewriteCond %{HTTP_HOST} !^server$  
RewriteRule ^(.*)$ server$1 [R,NE,L] 

# prepend /app to URL if missing  
RewriteCond %{request_uri} !^/app.*?  
RewriteRule ^(.+?)$ app/$1 [R,NE,L]

Obrigado a você, fahadsadah e Insanity5902! Estou hesitante em sinalizar um de vocês como "correto", já que ambos forneceram dados valiosos que compunham a solução final.

    
por user27451 16.01.2010 / 17:02

2 respostas

1

Use as seguintes diretivas de configuração (você provavelmente deseja adicioná-las ao seu arquivo .htaccess ):

RewriteEngine on
RewriteCond %{request_uri} !^/prepended
RewriteRule ^(.+?)$ prepended/$1
    
por 16.01.2010 / 17:34
0

Isso deve funcionar melhor

RewriteEngine On
RewriteCond %{HTTP_HOST} !^server$ [NC]
RewriteRule ^(.*)$ http://server/$1

RewriteRule ^$ /app

Isso está fora de mim, mas o que deve estar acontecendo . A solicitação vem, se não estiver usando servidor para o nome do host, ele redirecionará para o link mantendo o restante do Campo de URI intacto. Em seguida, ele reprocessará as regras novamente, ignorará a primeira (desde que RewriteCond seja false) e, em seguida, processará a RewriteRule. O que está dizendo, se o URI estiver vazio, envie para / app. Se o URI for qualquer outra coisa, então vazio, ele usará o que já está lá.

Então, além do que você já tem, também deve funcionar como

http://server/foo -> http://server/foo
http://server.domain/foo -> http://server/foo

Deixe-me saber como isso funciona, Na minha cabeça parece funcionar bem:)

    
por 16.01.2010 / 17:50