好近, 我正在尝试为用户的浏览器语言创建虚拟子文件夹。
所以我有以下文件夹结构:
www/
Core/
Classes/
Autoloader.Class.php
Smarty.Class.php
Database.Class.php
LoadingOrder.json
Libraries/
Smarty.Class.BC.php
Smarty.Class.php
SmartyModules/
..
Modules/
Autoloader.Module.php
Wall.Module.php
Account.Module.php
LoadingOrder.json
Engine.php
Initialize.php
Templates/
Default/
css/
main.css
style.css
ErrorHandler.css
images/
javascript/
jquery.js
Main.tpl
User.tpl
ErrorHandler.tpl
.htaccess
index.php
user.php
ErrorHandler.php
我需要的是创建多语种网站。
例如:
用户想要访问他/她的页面:http://site.domain/user
我想要实现的是,基于他的浏览器语言,它会将他重定向到
http://site.domain/en/user
- 如果他说英语,
http://site.domain/ru/user
- 如果他说俄语,
http://site.domain/pt/user
- 如果他说葡萄牙语。
问题是,这些语言子文件夹应该只是虚拟的,并且它们的所有请求都应该仅用于user.php,这是根目录中的一个。
我一直在谷歌,并发现在http://battle.net - 有这样的系统。
那么可以通过htaccess或纯粹的php创建这样的系统吗?
答案 0 :(得分:1)
将此代码放入DOCUMENT_ROOT/.htaccess
文件中:
RewriteEngine On
RewriteCond %{HTTP:Accept-Language} ^([a-z]{2})- [NC]
RewriteRule ^user/?$ /%1%{REQUEST_URI} [L,NC,R]
RewriteRule ^([a-z]{2})/(user)/?$ /$2.php?lang=$1 [L,NC,QSA]
这会在浏览器中将/user
重定向到/en/user
,但会以静默方式加载/user.php?lang=en
。