我正在尝试获取用户所在的language
和page
。
典型的网址可能看起来像example.com/fr/login
,这意味着他们会在fr
页面上使用login
语言。
语言部分也是可选的,URL也可能看起来像example.com/login
(在这种情况下,我会检查用户是否有语言cookie,否则我默认显示英语)。
所以我的.htaccess看起来像:
# if url contains login, then route to page.php
RewriteRule login/?$ /page.php?login [QSA]
# if start of url contains a language param,
# make it available as a GET param for PHP to use
RewriteRule ^(en|fr)(?:/([^/]+))?$ $2?lang=$1 [NC,L,QSA]
我需要的结果是,如果我们在页面login
上,则page.php
应该会收到$_GET['lang']
(值为fr
)和$_GET['login']
(没有价值,只是它的存在让我知道我们在登录页面上)。同样,如果我们继续使用example.com/fr
,则index.php可以$_GET['lang']
可用。
请注意,我有很多页面和多种语言,因此如果您只想重复使用所有可能方案的规则,那么它可能不是扩展许多页面和多种语言的最佳方式。
编辑:仍在测试它是否正常,但通过这样做取得了一些进展:
RewriteRule ^(en|fr|it)/?login$ /index?page=login&lang=$1 [QSA]
# Catch the rest
RewriteRule ^(en|fr|it) ?lang=$1 [NC,L,QSA]