让我立即开始讨论我的问题:
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/administracija
至sinj.com.hr/index.php?var1=administracija