忽略 htAccess 中不存在的 /虚拟子文件夹



我有一个多语言网站,我想在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?

的实际文件夹

您可以使用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

最新更新