[英]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.php
( example.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.