描述&样本数据
立陶宛语(默认)和英语有两种语言。
我的参数$lang
可以包含值lt
或en
。
我有3个文件:users.php
,nav.php
和arrays.php
arrays.php
看起来像:
$navItems = array(
array(
'slug' => "index.php",
'title_en' => "Home",
'title_lt' => "Pradžia"
),
array(
'slug' => "users.php?lang=en",
'title_en' => "English",
'title_lt' => "Anglų"
),
array(
'slug' => "users.php?lang=lt",
'title_en' => "Lithuanian",
'title_lt' => "Lietuvių"
)
);
users.php
看起来像:
if (!empty($_GET['lang'])) {
$_COOKIE['lang'] = $_GET['lang'] === 'en' ? 'en' : 'lt';
} else {
$_COOKIE['lang'] = 'lt';
}
setcookie('lang', $_COOKIE['lang']);
<?php include('includes/nav.php'); ?>
nav.php
看起来像:
if ( $_COOKIE['lang'] == "en") {
$lang = "en";
} else {
$lang = "lt";
}
$title = "title_" . $lang;
?>
<nav class="top-header-nav">
<ul>
<?php
foreach ($navItems as $item) {
echo "<li><a href=\"$item[slug]\">$item[$title]</a></li>";
}
?>
</ul>
</nav>
因此nav.php
生成HTML按钮,例如:<a href="users.php?lang=en">English</a>
我需要什么
选择英语后,我在地址栏中的网址如下:http://localhost/users.php?lang=en
我需要实现http://localhost/en/users/
而非上述。
我做了什么
我在WAMP上测试它。
我的.htaccess
文件现在看起来像:
RewriteEngine on
RewriteBase /
RewriteRule ^(en|lt)/(.*)$ $2?lang=$1&%{query_STRING} [L]
但它不起作用,我也是这样尝试的:RewriteEngine on ^(en|lt)?(.*)$ $2?lang=$1
但也没有成功。
你有想法吗?