htaccess mod重写问题

让我立即开始我的问题:

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] 

有文件夹sinj.com.hr/administracija ,当我尝试访问http://localhost/sinj.com.hr/administracija我被redirect

HTTP://localhost/sinj.com.hr/administracija VAR1 = administracija

我想要的是,当用户inputhttp://localhost/sinj.com.hr/administracija ,他被redirect到http://localhost/sinj.com.hr/administracija/index.php 。 我试图用头(“位置:…”)做到这一点,但它总是将我redirect到http://localhost/sinj.com.hr/administracija?var1=administracija 。 如果文件夹administracija重命名然后header()函数工作。 任何想法如何解决这个问题?

谢谢,Ile

在我自己的Apacheconfiguration上testing我创build了目录DOCUMENT_ROOT/sinj.com.hr ,并将.htaccess文件放在那里,同时还有一个简单的index.php文件,将$ _REQUEST内容转储回给我。

这里是我使用的.htaccess

 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] 

RewriteCond行捕获index.php以防止它进入recursion循环。 我还给每个RewriteRule指定了redirect(R)和查询string追加(QSA)标志,并告诉它们是最后一个(L)规则。

我也改变了比赛分组,以包括除了斜线(/)以简化匹配。

嗯…试试这个怎么样?

 DirectoryIndex 

在administracija文件夹下的.htaccess文件中的指令? 在这种情况下,我特别build议:

 DirectoryIndex index.php 

不能让文本显示为代码在评论中,所以我将不得不使用答案…

 RewriteCond %{REQUEST_FILENAME}/index.php -f RewriteRule ^ %{REQUEST_URI}/index.php 

以下规则导致行为:

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

这是将/sinj.com.hr/administracijaredirect到sinj.com.hr/index.php?var1=administracija