忽略htaccess中不存在的/ virtual子文件夹/

时间:2012-10-29 08:28:26

标签: .htaccess uri

我有一个多语言网站,我想在URI中显示当前语言,如下所示:

URI:

www.domain.com/en/
www.domain.com/en/folder1/
www.domain.com/de/
www.domain.com/de/folder2/

目录:

public_html/
public_html/folder1/
public_html/
public_html/folder2/

然后将en或de保存在cookie中以处理语言代码。 有可能做到这些吗?即使没有en或de?的实际文件夹

1 个答案:

答案 0 :(得分:0)

您可以使用mod_rewrite在内部重写URI以删除语言,并使用CO标志来设置cookie。所以像这样(在你的文档根目录中的htaccess文件中):

RewriteEngine On
# first check the the folder/file actually exists:
RewriteCond %{REQUEST_URI} ^/[a-z]{2}/(.*)$
RewriteCond %{DOCUMENT_ROOT}/%1 -f [OR]
RewriteCond %{DOCUMENT_ROOT}/%1 -d
# rewrite and set cookie:
RewriteRule ^/?([a-z]{2})/(.*)$ /$2 [L,CO=lang:$1:domain.com]

这将设置名为 lang 的Cookie,其值等于原始URI中的2个字母前缀,并且域名为 domain.com