用于多语言网站的{htaccess mod_rewrite

时间:2017-05-11 15:57:18

标签: php html apache .htaccess mod-rewrite

描述&样本数据

立陶宛语(默认)和英语有两种语言。

我的参数$lang可以包含值lten

我有3个文件:users.phpnav.phparrays.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但也没有成功。

你有想法吗?

0 个答案:

没有答案