我正在翻译我的网站,并将使用以下结构:
从维护的角度来看,我想对所有语言使用完全相同的PHP文件。我将只获取URL,查看URL中包含哪种语言代码,然后从数据库中加载正确的语言。这样,我不必使用基本相同的代码来维护不同的文件。
因此,理想情况下,我希望www.mywebsite.com/es
加载www.mywebsite.com/index.php
但不重定向到它:地址栏中的URL仍应包含/es
。
以相同的方式,www.mywebsite.com/es/whatever/other.php
应该加载www.mywebsite.com/whatever/other.php
,但URL中应包含/es
。
.htaccess中有可能吗?
我现在要把的只是放在/es/index.php
中:
include('../index.php');
...效果很好,但是维护起来有点麻烦,因为我必须在所有语言文件夹中创建所有这些虚拟页面。
答案 0 :(得分:1)
您可以在网站根.htaccess中使用此代码:
DirectoryIndex index.php
Options -MultiViews
RewriteEngine On
RewriteRule ^(es|fr)$ /$1/ [L,NC,R=301]
RewriteRule ^(?:es|fr)/$ index.php [L,NC]
RewriteRule ^(?:es|fr)/(.+)$ $1 [L,NC]
答案 1 :(得分:0)
如果在服务器上找不到任何文件或目录,则可以将所有传入的请求重写为index.php。然后从index.php上的URL中提取语言代码,并从数据库中获取正确的信息。
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?url=$1 [L,QSA]
这应该有效