对于我在本地拥有的网站,我需要在多语言模式下更新用于设置显示语言的代码片段。
首先,我需要系统来确保url已经用语言键入;如果没有,它将不得不使用默认语言转换url,并将其添加为子文件夹。
最后,系统应该检查选择了哪种显示语言,并自动将其添加到查询中=>&lang=(language)
我试过这个代码,但它不起作用。
RewriteEngine On
RewriteCond %{ENV:REDIRECT_STATUS} 200
RewriteRule ^ - [L]
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
RewriteCond %{REQUEST_URI} !/(en|de|fr)/ [NC]
RewriteRule (.*) /test/en/$1 [R,L]
RewriteRule ^(en|de|fr)/$ /test/index.php?lang=$1 [L]
RewriteRule ^(en|de|fr)/city/(.+?)$ city.php?url=$2&lang=$1 [NC,L]
RewriteRule ^(en|de|fr)/(.*)$ /test/$1 [L]
服务器端语言中的模式(en|de|fr(始终有效。我不明白为什么它在HTACCESS中不起作用。
已解决
我想我已经解决了。现在,如果我键入local_ip/test/en
(没有最后一个斜杠(,系统会正确地将我指向local_ip/test/en/
(有最后一个斜线(。
这只是感兴趣的代码。
RewriteCond %{REQUEST_URI} /(en|de|fr)$ [NC]
RewriteRule (.*) /test/%1/ [R,L]
RewriteCond %{REQUEST_URI} !/(en|de|fr)/ [NC]
RewriteRule (.*) /test/en/$1 [R,L]
RewriteRule ^(en|de|fr)/$ /test/index.php?lang=$1 [L]
对于您显示的示例,您可以尝试以下操作吗。将其放在您的根目录中,也请在测试URL之前清除浏览器缓存。
RewriteEngine On
RewriteCond %{ENV:REDIRECT_STATUS} 200
RewriteRule ^ - [L]
RewriteCond %{HTTPS} off
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301,NE]
RewriteCond %{REQUEST_URI} !/(en|de|fr) [NC]
RewriteRule ^(.*)$ /test/en/$1 [R=301,L]
RewriteRule ^(en|de|fr)/?$ /test/index.php?lang=$1 [QSA,NC,L]
RewriteRule ^(en|de|fr)/city/(.+?)/?$ city.php?url=$2&lang=$1 [QSA,NC,L]
RewriteRule ^(en|de|fr)/([^/]*)/?$ /test/$1 [QSA,NC,L]