0

我似乎无法让我的 .htaccess 文件正确地将网址路由到我的网站。我有多种语言可供人们从想要的 URL 中进行选择,例如:

http://www.domain.com/en/
http://www.domain.com/en/contact

但是在编写规则以获取“en”变量时,我似乎无法让页面“联系人”工作。

RewriteRule /([^/]+)/([0-9]+)/ index.php?language=$1

我用它来获取语言代码,但我怎样才能让联系页面正常工作?

编辑:

显然我需要一些 QSA 选项,但现在语言 get 变量将联系人作为变量与 en

RewriteRule ^(.*)$ index.php?language=$1 [QSA,L]

使用此规则,站点:

http://www.domain.com/en/contact

回报:

en/contact

编辑2

我想要完成的是目录结构:

/
/contact
/about

将这些文件夹放在根目录中,但会抓取并忽略 /en/ 语言变量。所以我不需要 &page=contact 的第二个变量,我需要它来路由到目录文件夹。

4

1 回答 1

1

尝试组合你的两个表达式,虽然你需要修改第二组 -[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。前者用作目录,后者用作查询字符串中的参数。

于 2012-06-12T21:29:16.910 回答