我似乎无法获取我的.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
EDIT2
我想要完成的是目录结构:
/
/contact
/about
将这些文件夹放在根目录中,但是抓住并忽略/ en / language变量。所以我不需要为& page = contact提供第二个变量,我需要它来路由到目录文件夹。
答案 0 :(得分: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
。前者用作目录,后者用作查询字符串中的参数。