我似乎无法让我的.htaccess文件将网址正确路由到我的网站。我有多种语言,人们可以从想要的URL中选择,例如:
http://www.domain.com/en/
http://www.domain.com/en/contact
但是在编写规则以获取"en"变量时,我似乎无法让页面"联系人"工作。
RewriteRule /([^/]+)/([0-9]+)/ index.php?language=$1
我用它来获取语言代码,但我如何让联系页面工作?
编辑:
显然我需要一些 QSA 选项,但现在语言将变量抓取联系作为带有 en 的变量
RewriteRule ^(.*)$ index.php?language=$1 [QSA,L]
使用此规则,站点:
http://www.domain.com/en/contact
返回:
en/contact
编辑2
我试图完成的是目录结构:
/
/contact
/about
将这些文件夹放在根目录中,但抓取并忽略/en/语言变量。所以我不需要 &page=contact 的第二个变量,我需要它路由到目录文件夹。
尝试组合两个表达式,尽管您需要修改第二组 - [0-9]+
只会匹配数字,而不是像 contact
这样的单词。试试这个:
RewriteRule ^([^/]+)/([^/]+)/?$ index.php?language=$1 [QSA,L]
QSA
选项允许将查询字符串追加到干净的 URL,可能如下所示:
http://www.domain.com/en/contact?to=support&subject=Hello
为了回应您的评论,此表达式应该可以解决问题:
RewriteRule ^([^/]*)/([^/]+)/?$ $2/index.php?language=$1 [QSA,L]
例如,在重写的规则中,$2
保存contact
,$1
保留en
。前者用作目录,后者用作查询字符串中的参数。