htaccess mod reescreve o problema

1

Deixe-me começar imediatamente com o meu problema:

Options +FollowSymLinks
RewriteEngine On

RewriteBase / 
RewriteRule ^([a-zA-Z0-9_-]+)$ sinj.com.hr/index.php?var1=$1 [L]
RewriteRule ^([a-zA-Z0-9_-]+)/([a-zA-Z0-9_-]+)$ sinj.com.hr/index.php?var1=$1&var2=$2 [L]
RewriteRule ^([a-zA-Z0-9_-]+)/([a-zA-Z0-9_-]+)/([a-zA-Z0-9_-]+)$ sinj.com.hr/index.php?var1=$1&var2=$2&var3=$3 [L]
RewriteRule ^([a-zA-Z0-9_-]+)/([a-zA-Z0-9_-]+)/([a-zA-Z0-9_-]+)/([a-zA-Z0-9_-]+)$ sinj.com.hr/index.php?var1=$1&var2=$2&var3=$3&var4=$4 [L]


RewriteRule ^([a-zA-Z0-9_-]+)/$ sinj.com.hr/$1 [R=301,L]
RewriteRule ^([a-zA-Z0-9_-]+)/([a-zA-Z0-9_-]+)/$ sinj.com.hr/$1/$2 [R=301,L]
RewriteRule ^([a-zA-Z0-9_-]+)/([a-zA-Z0-9_-]+)/([a-zA-Z0-9_-]+)/$ sinj.com.hr/$1/$2/$3 [R=301,L]
RewriteRule ^([a-zA-Z0-9_-]+)/([a-zA-Z0-9_-]+)/([a-zA-Z0-9_-]+)/([a-zA-Z0-9_-]+)/$ sinj.com.hr/$1/$2/$3/$4 [R=301,L]

Existe a pasta sinj.com.hr/administracija e quando tento acessar http://localhost/sinj.com.hr/administracija , sou redirecionado para

http://localhost/sinj.com.hr/administracija?var1=administracija

O que eu gostaria é quando o usuário digita http://localhost/sinj.com.hr/administracija que ele é redirecionado para http://localhost/sinj.com.hr/administracija/index.php . Eu tentei fazer isso com o cabeçalho ("Location: ..."), mas sempre me redireciona para http://localhost/sinj.com.hr/administracija?var1=administracija . Se a pasta administracija for renomeada, a função header () funcionará. Alguma idéia de como resolver isso?

Obrigado, le

    
por ilija veselica 12.10.2009 / 04:24

4 respostas

1

Testando na minha própria configuração do Apache Eu criei o diretório DOCUMENT_ROOT/sinj.com.hr e coloquei o arquivo .htaccess lá junto com um simples arquivo index.php que acabou de despejar o conteúdo $ _REQUEST de volta para mim.

Aqui está o .htaccess que usei:

Options +FollowSymLinks
RewriteEngine On

RewriteBase /sinj.com.hr
RewriteCond %{REQUEST_URI} !^/sinj.com.hr/index.php
RewriteRule ^([^/]+)$ index.php?var1=$1 [R,L,QSA]
RewriteRule ^([^/]+)/([^/]+)$ index.php?var1=$1&var2=$2 [R,L,QSA]
RewriteRule ^([^/]+)/([^/]+)/([^/]+)$ index.php?var1=$1&var2=$2&var3=$3 [R,L,QSA]
RewriteRule ^([^/]+)/([^/]+)/([^/]+)/([^/]+)$ index.php?var1=$1&var2=$2&var3=$3&var4=$4 [R,L,QSA]

A linha RewriteCond captura index.php para evitar que ela entre em um loop recursivo. Eu também dei a cada RewriteRule os sinalizadores de redirecionamento (R) e query string append (QSA) além de dizer a eles que eles eram a última regra (L) a ser aplicada.

Eu também alterei o agrupamento de correspondência para incluir qualquer coisa, exceto uma barra (/) para simplificar a correspondência.

    
por 12.10.2009 / 14:57
0

Hmmmm ... que tal tentar o

DirectoryIndex

diretiva no arquivo .htaccess sob a pasta administracija? Nesse caso, eu sugeriria especificamente:

DirectoryIndex index.php
    
por 12.10.2009 / 05:32
0

Não foi possível exibir o texto como código no comentário. Por isso, terei que usar a resposta ...

RewriteCond %{REQUEST_FILENAME}/index.php -f
RewriteRule ^ %{REQUEST_URI}/index.php
    
por 12.10.2009 / 12:51
0

A seguinte regra está causando o comportamento:

RewriteRule ^([a-zA-Z0-9_-]+)/([a-zA-Z0-9_-]+)$ sinj.com.hr/index.php?var1=$1&var2=$2 [L]

Isso está redirecionando /sinj.com.hr/administracija para sinj.com.hr/index.php?var1=administracija

    
por 12.10.2009 / 14:54