我有index.php,用index.php设置语言?lang = de。 英语是默认语言,我不需要使用index.php?lang = en
设置语言后,在htaccess中使用此条件
RewriteRule ^([a-zA-Z0-9\-_]+)/$ /index.php?lang=$1 [L]
未设置语言时
RewriteRule ^([a-zA-Z0-9\-_]+)$ /index.php?pag=$1 [L]
设置语言和页面时
RewriteRule ^([a-zA-Z0-9\-_]+)/([a-zA-Z0-9\-_]+)$ /index.php?lang=$1&pag=$2 [L]
设置语言,页面和子页面时
RewriteRule ^([a-zA-Z0-9\-_]+)/([a-zA-Z0-9\-_]+)/([a-zA-Z0-9\-_]+)$ /index.php?lang=$1&pag=$2&spag=$3 [L]
但是当我没有设置语言时我无法访问子页面,什么时候必须是英语
index.php?pag=services&spag=web_design
RewriteRule ^([a-zA-Z0-9\-_]+)/([a-zA-Z0-9\-_]+)$ /index.php?pag=$2&spag=$3 [L]
知道如何让它发挥作用吗? 此外,如果您有想法将所有这一行合并为一个,那将是非常棒的。
谢谢!
答案 0 :(得分:2)
据我了解,有人会按以下格式访问您的网页:
http://www.mysite.com/LANGUAGE/PAGE/SUBPAGE/
类似的东西:
http://www.mysite.com/ENGLISH/events/upcoming
会转换为:
http://www.mysite.com/index.php?lang=ENGLISH&pag=events&spag=upcoming
哪会将他们带到Events->Upcoming
的英语版本?
假设以上是正确的。以下内容适用:
ReWriteRule ^([\w-]*)/*([\w-]*)/*([\w-]*)/*$ index.php?lang=$1&pag=$2&spag=$3
在var_dump($_GET)
中运行index.php
会输出以下内容:
// http://www.mysite.com/ENGLISH/home/upcoming
array(3) {
["lang"]=>
string(7) "ENGLISH"
["pag"]=>
string(4) "home"
["spag"]=>
string(8) "upcoming"
}
如果没有设置,那么你将它放在网址中为零(或者如果在最后留空),如下所示:
http://www.mysite.com/0/home
哪会给:
array(3) {
["lang"]=>
string(1) "0"
["pag"]=>
string(4) "home"
["spag"]=>
string(0) ""
}
http://www.mysite.com/ENGLISH/news/recent/
http://www.mysite.com/ENGLISH/about/
http://www.mysite.com/ENGLISH/
http://www.mysite.com/0/news/recent/
http://www.mysite.com/0/about/
http://www.mysite.com/0/
你也可以改变顺序......所以语言是最后一次:
ReWriteRule ^([\w-]*)/*([\w-]*)/*([\w-]*)/*$ index.php?lang=$3&pag=$1&spag=$2
并使用以下网址:
http://www.mysite.com/news/recent/ENGLISH
http://www.mysite.com/about/history/
http://www.mysite.com/about
答案 1 :(得分:0)
您可以使用以下规则:
# just language
RewriteRule ^([a-z]{2})/?$ /index.php?lang=$1 [L,NC,QSA]
# just page
RewriteRule ^([\w-]{3,})/?$ /index.php?pag=$1 [L,QSA]
# lang & page
RewriteRule ^([a-z]{2})/([\w-]+)/?$ /index.php?lang=$1&pag=$2 [L,QSA,NC]
# page & spage
RewriteRule ^([\w-]{3,})/([\w-]+)/?$ /index.php?pag=$1&spag=$2 [L,QSA]
# lang, page & spage
RewriteRule ^([a-z]{2})/([\w-]+)/([\w-]+)/?$ /index.php?lang=$1pag=$2&spag=$3 [L,QSA,NC]