簡體   English   中英

htaccess重寫以支持帶有下拉選擇器的多語言網站。 如何解決這個問題?

[英]htaccess rewrite to support multilingual site with dropdown selector. How to fix this?

這是我的結構:

在我的頁面example.com中我有多種語言。 在索引頁面中,我還有一個下拉菜單,您可以更改您的語言。 此下拉列表也出現在其他頁面中。

這是我對根文件的htaccess

RewriteEngine On
RewriteRule ^(en|pl|cz|hu)?$ index.php?lang=$1 [NC,L]

所以,我寫了一個代碼,如果域是example.com/en它將加載英文翻譯。

我的問題是在其他頁面上我無法更改語言並保持在同一頁面上。

所以,當我在www.example.com/en並點擊link.phpexample.com/link.php )時,我可以通過Session保留link.php語言

但是當我在example.com/link.php並更改語言時,結果不正確(結果是一些需要修復的PHP代碼的輸出,我相信它不適合這里)

我想的是包含/en/ (或網址中的任何其他語言,例如www.example.com/en/link.php

但這給了我404錯誤。 我相信是因為htaccess文件,我沒有任何名為en等的文件夾。

我怎么解決這個問題? 它是一個htaccess的東西?

我可以認為邏輯但不知道如何實現就像

當域包含(en|pl|cz|hu)后跟/***通過****.php?lang=$1

試試這個:

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'];

編輯:**現在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

如果您有任何疑問,請詢問。

你根本不需要使用.htaccess 你可以將表單$_POST返回到它所在的頁面。

if ($_POST['language']) {
    $_SESSION[KEY]['Language'] = $_POST['language'];
}

然后根據會話中的變量,定義要使用的語言。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM