这是我的结构:
在我的页面example.com中我有多种语言。在索引页面中,我还有一个下拉菜单,您可以更改您的语言。此下拉列表也出现在其他页面中。
这是我对根文件的htaccess
RewriteEngine On
RewriteRule ^(en|pl|cz|hu)?$ index.php?lang=$1 [NC,L]
所以,我编写了一个代码,如果域名是example.com/en
,它将加载英文翻译。
我的问题是在其他页面上我无法更改语言并保持在同一页面上。
所以当我在www.example.com/en
并点击link.php
(example.com/link.php
)时,我可以通过Session
但是当我在example.com/link.php
并更改语言时,结果不正确(结果是某些需要修复的PHP代码的输出,我相信它不适合这里)
我认为包含/en/
(或网址中的任何其他语言,例如www.example.com/en/link.php
但是这给了我404错误。我相信是因为htaccess文件而且我没有任何名为en
的文件夹等。
我该如何解决这个问题? 它是一个htaccess的东西吗?
我认为逻辑但不知道如何实现就像
当域名包含(en|pl|cz|hu)
后跟/***
时,请通过****.php?lang=$1
答案 0 :(得分:0)
试试这个:
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(en|pl|cz|hu)/(.*)?$ $2.php?lang=$1 [NC,L]
你可以在会话中存储lang变量,如下所示:
// link.php
if (isset($_GET['lang']) {
$_SESSION['lang'] = $_GET['lang'];
}
$lang = $_SESSION['lang'];
答案 1 :(得分:0)
EDITED: **现在htaccess只适用于.php文件。 **
RewriteEngine On
RewriteRule ^(en|pl|cz|hu)/([a-zA-Z0-9-/]+).php$ $2.php?lang=$1 [NC,L]
现在你的链接必须是
www.domain.com/en/index
www.domain.com/en/link
www.domain.com/pl/link
如果您有任何疑问,请询问。
答案 2 :(得分:0)
您根本不需要使用.htaccess
。您可以将表单$_POST
返回到其所在的页面。
if ($_POST['language']) {
$_SESSION[KEY]['Language'] = $_POST['language'];
}
然后根据会话中的变量,定义要使用的语言。