gpt4 book ai didi

apache - .htaccess 多语言站点

转载 作者:行者123 更新时间:2023-12-04 05:51:42 25 4
gpt4 key购买 nike

好的,所以基本上我有这部分 .htaccess 部分工作,但还没有完全完成。我的服务器上有两个子目录,分别是英文和法文站点(子目录分别是 en 和 fr)。当用户在 URL 栏中输入内容时,我希望将他们输入的任何内容添加到 en 或 fr(取决于用户计算机上的默认语言)。

如果他们输入 domain.com/test(并且他们的语言设置为英语),我希望它重定向到 domain.com/en/test/。我只希望在 test 不是文件夹、目录、文件或根目录中的任何内容时发生这种情况。

到目前为止,这是我的 .htaccess 代码:

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} !(\.[a-zA-Z0-9]{1,5}|/)$
RewriteCond %{HTTP:Accept-Language} ^en [NC]
RewriteRule ^(.*)$ /en/$1/ [R=301,L]

但是,我的代码存在的问题是,如果用户输入诸如 domain.com/test/(带斜杠)之类的内容,它将无法工作,因为我的 .htaccess 中有另一个部分会在末尾强制使用斜杠一切。如果用户在 domain.com/test.html 中输入(这是域根目录中的文件),它将不起作用,因为我的 .htaccess 中有另一个部分删除了 .html 扩展名。

基本上,我需要这个重定向在所有情况下都能正常工作,除非它在逻辑上不应该。

无论如何,如果你们中的任何人能帮助我,我将不胜感激。

最佳答案

好的。这就是我的做法:

无论如何,始终需要语言后缀/en、/fr 等。因此,将其设置为 URL GET。
使用 PHP,您可以强制插入它。

RewriteRule ^([a-z]{2})/?$ index.php?language=$1
RewriteRule ^([a-z]{2})/register/?$ register.php?language=$1

使用 PHP 或您使用的任何脚本,您可以检查 IP、自动设置国家/地区 GET 和/或设置 session 。将 session 构建到您的所有 URL 中,因此您的所有链接都有
$url.$lang.$pagename;

使用/? 使斜杠可选如上面的例子。

我不使用 {REQUEST_FILENAME},而是我有一个所有可能的主 url 的列表 - 但如果你愿意,你也可以使用 {REQUEST_FILENAME},但你需要考虑真实的目录。

关于apache - .htaccess 多语言站点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9989109/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com