I have 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]
知道如何让它工作吗?此外,如果您有将所有这一行合并为一行的想法,那就太好了。
谢谢!
据我了解,有人会以以下格式访问您的页面:
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
然后,在 index.php
中运行 var_dump($_GET)
将输出以下内容:
// http://www.mysite.com/ENGLISH/home/upcoming
array(3) {
["lang"]=>
string(7) "ENGLISH"
["pag"]=>
string(4) "home"
["spag"]=>
string(8) "upcoming"
}
如果未设置,则将其作为零(如果在末尾将其留空)放在 url 中,如下所示:
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
您可以使用
以下规则:
# 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]