.htaccess与PHP隐藏参数和语言选择


.htaccess with php hidden parameters and language selection

我似乎无法让我的.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 。前者用作目录,后者用作查询字符串中的参数。