htaccess mod 重写问题

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,我被重定向到

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

我希望当用户输入时http://localhost/sinj.com.hr/administracija,他被重定向到http://localhost/sinj.com.hr/administracija/index.php。我尝试使用 header("Location:... ") 来实现这一点,但它总是将我重定向到http://localhost/sinj.com.hr/administracija?var1=administracija。如果文件夹 administracija 被重命名,则 header() 函数有效。有什么想法可以解决这个问题吗?

谢谢,Ile

答案1

在自己的 Apache 配置上进行测试时,我创建了目录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]

重写条件行捕获index.php以防止其进入递归循环。我还给了每个重写规则重定向(R)和查询字符串附加(QSA)标志,此外还告诉他们它们是最后(L)应用的规则。

我还改变了匹配分组以包含除斜杠(/)之外的任何内容,以简化匹配。

答案2

嗯...试试

DirectoryIndex

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

DirectoryIndex index.php

答案3

无法将文本显示为评论中的代码,所以我必须使用答案......

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

答案4

以下规则导致了此行为:

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

重定向/sinj.com.hr/administracijasinj.com.hr/index.php?var1=administracija

相关内容