Posso reescrever o URL sem redirecionar no Apache2?

2

Temos uma regra de reescrita que funciona bem, mas a razão pela qual estamos reescrevendo é porque a URL de destino não é tão boa.

foo.com/bar -> foo.com/some/really/long/address

O que eu gostaria de fazer é manter a URL foo.com/bar no navegador, mas mostre a página foo.com/some/really/long/address . Isso é possível?

    
por Nick Bolton 04.07.2010 / 15:09

1 resposta

3

mod_rewrite do que você precisa.

Isso é muito fácil e é uma ferramenta poderosa.

Eu sugiro ler isto - > link

E exemplo:

Isso substitui o rewriteengine, em seguida, aplica algumas condições e, se forem verdadeiras, aplica a reescrita em si. é como um codeblock while / case.

A parte mais útil é o log.;)

    RewriteEngine on
RewriteLogLevel 0
RewriteLog "/var/www/rewrite.log"

<Directory /var/www>

    Options -ExecCGI -Indexes
    AllowOverride none
    Order allow,deny
    allow from all
    #SetHandler none

    RewriteEngine On
    RewriteBase /
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} -d
    RewriteCond %{REQUEST_URI} !=/favicon.ico
    RewriteRule ^(\w+.\w+)/(es|ca|en)/$ index.php?user=$1&lang=$2 [L]

    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} -d
    RewriteCond %{REQUEST_URI} !=/favicon.ico
    RewriteRule ^(\w+.\w+)/$ index.php?user=$1&lang= [L]

    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_URI} !=/favicon.ico
    RewriteRule ^(\w+.\w+)/(\w+)?(/(.*))?$ index.php?user=$1&lang=$2$4 [L,QSA]

também, você pode olhar para o mod_proxy, ele vai fazer o truque, mas não é o 'bom caminho' na minha opinião.

espero que ajude.

    
por 04.07.2010 / 22:27