1

我有 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]

知道如何使它工作吗?此外,如果您有一个想法将所有这条线合并到一条线上,那就太好了。

谢谢!

4

2 回答 2

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"
}

如果未设置,则将其设置为 0(如果在末尾则将其留空),如下所示:

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

并使用如下 URL:

http://www.mysite.com/news/recent/ENGLISH
http://www.mysite.com/about/history/
http://www.mysite.com/about
于 2013-09-21T22:01:02.113 回答
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]
于 2013-09-22T07:21:41.447 回答