.htaccess HTC访问条件
只有当查询字符串中没有“locale”时,我才尝试匹配某些规则 我是这样做的:.htaccess HTC访问条件,.htaccess,mod-rewrite,.htaccess,Mod Rewrite,只有当查询字符串中没有“locale”时,我才尝试匹配某些规则 我是这样做的: RewriteCond %{QUERY_STRING} !locale RewriteRule ^acceuil$ home.php?locale=fr [NC,L] ... (More rewrite rules) 基本上我希望/acceuil进入home.php?locale=fr(工作正常) 除了如果链接是这样的,我想让它转到/home,它相当于home.php?locale=en 任何重写的机会都可以用以下
RewriteCond %{QUERY_STRING} !locale
RewriteRule ^acceuil$ home.php?locale=fr [NC,L]
... (More rewrite rules)
基本上我希望/acceuil
进入home.php?locale=fr
(工作正常)
除了如果链接是这样的,我想让它转到/home
,它相当于home.php?locale=en
任何重写的机会都可以用以下方式说“/acceuil
”:
if(isset($locale)) {
go to home.php?locale=$locale
}
else{
go to home.php?locale=fr
}
另外,我想知道是否应该在每个规则之前复制粘贴条件
请让我知道这是否可行,以及我如何才能让它继续下去,如果您有一些关于htaccess重写的有用参考,请分享:)
谢谢
编辑:第一个条件是检查查询字符串中是否存在
local
。如果不是,请将URL重写到home.php?locale=fr
,如果有locale=
,则它会将其后的内容(仅两个字符)放入home.php?locale=%1
中,因此acceuil?locale=fr
表示home.php?locale=fr
。而acceuil?locale=en
意味着home.php?locale=en
有两个条件和两个重写规则:-D这里有一个通用规则应该可以工作,它确保GET中的变量是
locale
(notlocaleee
notllllocale
):
注意:如果它是法语,那么它是Accueil,而不是Accueil,谢谢您的快速回复!根据这个逻辑,我明白了条件只适用于一个规则,对吗?如果是法语,那么它是
Accueil
,而不是Accueil
:)谢谢你的帮助和thx帮我找到了打字错误:)
RewriteCond %{QUERY_STRING} !locale
RewriteRule ^acceuil$ home.php?locale=fr [L,NC]
RewriteCond %{QUERY_STRING} locale=([a-zA-Z]{2})
RewriteRule ^acceuil$ home.php?locale=%1 [L,NC]
RewriteCond %{QUERY_STRING} (^|&)locale=([a-zA-A]+)(&|$)
RewriteRule ^acceuil$ home.php?locale=%1 [L,NC,QSA]
# if locale = en ...
RewriteCond %{QUERY_STRING} (^|&)locale=en(&|$)
# ... and it goes to home.php then go back to /home:
RewriteRule ^home.php$ /home [L,NC,QSA]