Reescreva a mudança de URL se a última barra for omitida

2

Eu reescrevi a regra que funciona bem, mas acaba alterando a URL visível se uma barra for omitida ao ir para um index.php :

RewriteEngine on
RewriteCond  %{REQUEST_URI} !main
RewriteRule /.* /~user/main$0

Quando alguém visita

http://user.dev.example.com/utilities/pib/

A página funciona bem. No entanto, se eles visitarem

http://user.dev.example.com/utilities/pib

Eles são redirecionados para

http://user.dev.example.com/~user/main/utilities/pib/

Isso ainda funciona bem, mas prefiro que o URL não seja alterado. O servidor tem outra configuração que permite que ~user na URL leve você para public_html no disco (onde esses arquivos estão localizados). Então, o URL real deve ser:

http://dev.example.com/~user/main/utilities/pib/

Mas ainda deixa meu nome no domínio. Não tenho certeza se sou capaz de resolver esse problema, mas também não sei o que outra configuração poderia causar.

    
por Explosion Pills 14.09.2011 / 00:16

2 respostas

1

Você sempre pode usar mod_rewrite para acrescentar uma barra à direita

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_URI} !(.*)/$
RewriteRule ^(.*)$ http://domain.com/$1/ [L,R=301]

Adicione acima da sua primeira regra

    
por 14.09.2011 / 01:00
0

As regras acima não são a causa disso. Verifique todos os arquivos de configuração incluídos em conf.d (ou similar). Se você definir AllowOverride All , encontre todos os arquivos .htaccess com:

find /path/to/document/root -name .htaccess

e dê uma olhada nisso.

Também sugiro que você ative o mod_rewrite log:

RewriteLog /tmp/rewrite.log
RewriteLogLevel 9

para ver como o URI é analisado.

    
por 14.09.2011 / 04:14